PDA

View Full Version : مشکل فارسی در SQL



Lakposht
یک شنبه 21 اسفند 1384, 18:22 عصر
سلام
من اولین سایتم رو که با ASP.net و C# و SQL نوشته ام آپلود کرده ام اما یه مشکلی داره و اونم اینه که وقتی یک رکوردی به زبان فارسی وارد می کنم موقع خوندن از بانک به صورت ؟؟؟؟؟؟؟؟ نشون می ده . اگه راهی برای حل این مشکل دارید منو راهنمایی کنید.بانک SQL رو با زبان Arabic_CI_AI_KS_WS ساخته ام:اشتباه:

iekrang
یک شنبه 21 اسفند 1384, 20:26 عصر
دوست عزیز موقع اضافه کردن اطلاعات به دیتابیستون آیا از N استفاده میکنید؟

mahdi_negahi
یک شنبه 21 اسفند 1384, 21:54 عصر
دوست عزیز باید از نوع داده ntext یا nchar استفاده کنید

l2l7l9l
یک شنبه 21 اسفند 1384, 21:57 عصر
من هم همین مشکل رو دارم و در ضمن از nchar استفاده می کنم ! لطفا اگه میشه راهنمایی کنید. واقعا کارام لنگ مونده ...

white fox
دوشنبه 22 اسفند 1384, 04:48 صبح
اگر از Stored Procedure اسفاده میکنید نباید مشکلی باشه اما اگر دستور INSERT رو در کد مینیویسید علاوه بر اینکه فیلد رو از نوع NCAR یا NVARCHAR میگذارید باید قبلا از نوشتن مقدار هر فیلد از کلمه N استفاده کنید.....فرضا:


INSERT INTO [TableName] VALUES(N'v1', N'v2', N'v3')

PersianAmir
سه شنبه 23 اسفند 1384, 06:32 صبح
سلام

راه حل white fox دزسته اما راه دیگر استفاده از پارامترها در تبادلات دیتابیسی هست.

تعریف پارامتر ها به نوعی کد شما را امن هم می نماید!

Lakposht
سه شنبه 23 اسفند 1384, 12:26 عصر
در دیتا بیس همه فیلدها رو NVarChar کرده ام ودر برنامه .aspx هم از دستور زیر استفاده کرده ام
new SqlParameter("@FName",SqlDbType.NVarChar,50)
یکی از دوستان می گفت باید یک استوردپروسیجر رو روی دیتابیس اجرا کنم تا زبان فارسی رو درست نشون بده.و من این استوردپروسیجر رو ندارم و بلد نیستم چطور بنویسمش.

iekrang
سه شنبه 23 اسفند 1384, 12:38 عصر
همون دستوری که white fox داده رو استفاده کنی مشکل حل میشه.فقط توجه کن که توی دستورات insert و update قبل از مقادیر، N رو فراموش نکنی.

l2l7l9l
سه شنبه 23 اسفند 1384, 13:08 عصر
بله با همون دستور کارم راه افتاد ... از همه ی دوستان به خاطر وقتی که گذاشتن ممنون...

PersianAmir
سه شنبه 23 اسفند 1384, 20:37 عصر
به نظر من بهتر بود از stored procedure ها برای عملیات دیتابیسی استفاده می کردید.

و فقط در کد خود نیاز به تعریف پارامترها بود.

استفاده از sp در کدها مزایای زیادی داره که به گمانم توی همین سایت هم بهش اشاره شده باشه.

موفق باشید

Lakposht
چهارشنبه 24 اسفند 1384, 12:38 عصر
سلام
ممنون که به مشکلم توجه کردید.
من از ُStored Procedure ها استفاده میکنم و در همه جا شامل Table ها و Stored Procedure ها و در داده های SqlParameter از NVARCHAR استفاده می کنم.
نمونه یک Stored Procedure :

CREATE PROCEDURE Create_User

@FName NVARCHAR(20),
@LName NVARCHAR(20)
AS
INSERT INTO Users
(FName,LName)
VALUES (@FName,@LName)
GO

ببخشید خوندنش ممکنه سخت باشه.
تو اینترنت هم جستجو کردم که گفته بود دستور زیر را روی آن اجرا کنم اما نشد.
ALTER DATABASE DBname COLLATE Arabic_CS_AI_WS