View Full Version : عدم ذخیره فارسی در sql
masterdanesh
جمعه 25 فروردین 1391, 12:37 عصر
سلام من در سی شارپ برنامه ای نوشتم که طی آن اطلاعاتی در اس کیو ال ذخیره می شود . وقتی انگلیسی می نویسم این ذخیره سازی به درستی انجام می شود اما در خصوص کاراکتر های فارسی در اس کیو ال علامت ? درج می شود . این مشکل چه راه حلی دارد؟
j_naroogha@yahoo.com
جمعه 25 فروردین 1391, 12:44 عصر
شما باید ار nvarchar در sql استفاده کنید وهمچنین در هنگام کار با t-sql از یک N قبل از فیلد استفاده کنید.
arash69
جمعه 25 فروردین 1391, 12:51 عصر
سلام
باید فیلدتون رو از نوع nvarchar بگیرین.
masterdanesh
جمعه 25 فروردین 1391, 13:00 عصر
به چه شکلی دستور تغییر می کنه اگه N که فرمودید به کار بره؟ این دستور منه
<font face="Consolas"><font size="4"><font face="Consolas"><font size="4">
cmd.CommandText =(
"insert into asami(name,family,fathername,tahsilat,tavalod,sabt ename,telephone,mobile)values('"<font size="4" face="Consolas"><font size="4" face="Consolas">+textBox1 .Text +
j_naroogha@yahoo.com
جمعه 25 فروردین 1391, 13:14 عصر
"insert into asami(name,family,fathername,tahsilat,tavalod,sabt ename,telephone,mobile)values(N'"<font size="4" face="Consolas"><font size="4" face="Consolas">+textBox1 .Text
Alghoochi
جمعه 25 فروردین 1391, 13:22 عصر
به چه شکلی دستور تغییر می کنه اگه N که فرمودید به کار بره؟ این دستور منه
<font face="Consolas"><font size="4"><font face="Consolas"><font size="4">
cmd.CommandText =(
"insert into asami(name,family,fathername,tahsilat,tavalod,sabt ename,telephone,mobile)values('"<font size="4" face="Consolas"><font size="4" face="Consolas">+textBox1 .Text +
اول اینکه بهتره از Stored Procedures یا روالهای ذخیرهشده استفاده کنی.
شما باید نوع ستونی که میخوای اطلاعات غیرانگلیسی توی اون دخیره کنی رو با N مشخص کنی. مثلا نوع اطلاعات ستونت Char بود باید NChar استفاده کنی. به همین شکل از NText به جای Text. فرق VarChar با Char تو اینه که VarChar طولش متغیره و شما فقط حداکثر طول رشته رو تعیین میکنید.
واسه دستورهای Sql هم :
INSERT INTO Table(Name) VALUES(N'مقدار')
ولی در کل پیشنهاد میکنم از روالهای ذخیرهشده و ارسال مقادیر بهوسیله پارامت استفاده کنی.
masterdanesh
جمعه 25 فروردین 1391, 13:25 عصر
همه فیلد ها رو از نوع nvarchar تعریف کردم حل نشد N که بالا فرمودید به چه شکلی به کار میره؟
Alghoochi
جمعه 25 فروردین 1391, 13:34 عصر
همه فیلد ها رو از نوع nvarchar تعریف کردم حل نشد N که بالا فرمودید به چه شکلی به کار میره؟
INSERT INTO Asami(name, family, fathername) VALUES(@name, @family, @fathername)
دستور sql خودت رو به شکلی که تو بالا واست نوشتم تبدیل کن. بقیه پارامترها رو خودت تعریف کن.
تو کدهات هم اینکارو بکن.
cmd.Parameters.AddWithValue("@name", "");
cmd.Parameters["@name"].SqlDbType = SqlDbType.NVarChar;
واسه همهی پارامترهات باید همینکارو بکنی.
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.