03-09-2007, 06:11
|
|
|
חבר מתאריך: 14.07.07
הודעות: 14
|
|
הגדרת קידוד עברי למסד נתונים SQL Server בעבודה עם ASP
אם ישנם הערות אשמח לשמוע
יכול להיות שיש כאן קצת מידע לא קשור לבסיסי נתונים ממש אבל בשביל התמונה הכללית הוספתי אותו
כאשר עובדים עם מסד נתונים MSsql =sql server
קבצים : asp ; aspx;
קבצים HTML
שפות :C# ;VB ביחד עם sql
CodePage
ראשית יש לקודד דף (קידוד הדף זהו הקידוד לשרת הווה אומר באיזו שפה אנחנו מדברים עם השרת,שליחה,הוספה , עדכון ,וכ"ו) הנה כך >
<%@ Page Language="C#" CodePage="65001" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" Debug="true" Culture="he-IL" %
charset
שנית יש לקודד את " הדפדפן " (כך שכל מי שפותח את הדף יראה עברית)
הנה כך (להוסיף > בהתחלה < בסוף כמובן
meta content="text/html; charset=utf-8 " http-equiv="content-type" /
עבודה עם פרמטרים - ----- > שימו לב להגדרת סוג SqlDbType.NVarChar
קובץ aspx ; asp
אנחנו נקרא גם לשגרה בה יש את ההגדרה לעדכון בסיס הנתונים - שם השגרה הוא : UPdatePhoto1
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandText = "UPdatePhoto1";
cmd.Parameters.Add(new SqlParameter("@param2", SqlDbType.NVarChar));
cmd.Parameters["@param2"].Direction = ParameterDirection.Input;
cmd.Parameters["@param2"].Value = TextBoxdisHE1.Text;
כעת נעבור ליצירת הטבלה עצמה
ככלל בכל עבודה עם השפה העברית , נגדיר את כל השדות עם N (מסמן עבודה עם נתונים של unicode)
לדוגמה Nvarchar ,Nchat,Ntext וכ"ו
שימו לב לשורה >
ALTER TABLE PhotoPage ALTER COLUMN disHE NVarChar(max) COLLATE Hebrew_CS_AI
שימו לב גם ל >NVarChar(max)
וגם ל > Hebrew_CS_AI
לכל שרת ישנה ברירת מחדל לאחסון הנתונים , ברירת המחדל היא ברוב המקרים לאנגלית (או סינית אם תרצו .....)
ההגדרה היא מסוג collation שמגדירה את סוג "החזקת" הנתונים ,אנחנו יכולים לשנות הגדרה זו ע"י הוספת השורה שלעיל
שורה זו כופה הגדרת collation על עמודה בשם disHE להיות מוגדרת לנתונים בעברית
אנו משתמשים בפקודה COLLATE לשם כך !
כמו שרואים אפשר להגדיר collation על עמודה אחת , כך שכל עמודה ועמודה "מדברת " בנפרד .
USE [AMPMDB1]
GO
/****** Object: Table [dbo].[PhotoPage] Script Date: 09/02/2007 09:22:12 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[PhotoPage](
[ID] [int] IDENTITY(1,1) NOT NULL,
[link] [nvarchar](max) NULL,
[disHE] [nvarchar](max) NULL, העמודה בעברית בה אנו משנים את הגדת ברירת המחדל
[disEN] [nvarchar](max) NULL,
[disFR] [nvarchar](max) NULL,
CONSTRAINT [PK_PhotoPage] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
ALTER TABLE PhotoPage ALTER COLUMN disHE VarChar(max) COLLATE Hebrew_CS_AI
GO
SET ANSI_PADDING OFF
כעת נראה את השגרה UPdatePhoto1 לה אנו קוראים
שימו לב שסוג הפרמטר בשם @param2 מוגדר כ - Nvarchar
ALTER PROCEDURE [dbo].[UPdatePhoto1]
@param1 varchar(MAX),@param2 Nvarchar (max),@param3 varchar(MAX),@param4 varchar(MAX)
AS
INSERT INTO [PhotoPage] (link ,disHE,disEN ,disFR )
VALUES ( @param1 ,@param2,@param3 ,@param4)
אם יש הארות והערות אשמח לשמוע
נערך לאחרונה ע"י ישראל K בתאריך 03-09-2007 בשעה 14:59.
סיבה: התאמת כותרת
|