PDA

View Full Version : عدم ذخیره فارسی در sql



masterdanesh
جمعه 25 فروردین 1391, 11:37 صبح
سلام من در سی شارپ برنامه ای نوشتم که طی آن اطلاعاتی در اس کیو ال ذخیره می شود . وقتی انگلیسی می نویسم این ذخیره سازی به درستی انجام می شود اما در خصوص کاراکتر های فارسی در اس کیو ال علامت ? درج می شود . این مشکل چه راه حلی دارد؟

j_naroogha@yahoo.com
جمعه 25 فروردین 1391, 11:44 صبح
شما باید ار nvarchar در sql استفاده کنید وهمچنین در هنگام کار با t-sql از یک N قبل از فیلد استفاده کنید.

arash69
جمعه 25 فروردین 1391, 11:51 صبح
سلام
باید فیلدتون رو از نوع nvarchar بگیرین.

masterdanesh
جمعه 25 فروردین 1391, 12: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, 12: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, 12: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, 12:25 عصر
همه فیلد ها رو از نوع nvarchar تعریف کردم حل نشد N که بالا فرمودید به چه شکلی به کار میره؟

Alghoochi
جمعه 25 فروردین 1391, 12:34 عصر
همه فیلد ها رو از نوع nvarchar تعریف کردم حل نشد N که بالا فرمودید به چه شکلی به کار میره؟



INSERT INTO Asami(name, family, fathername) VALUES(@name, @family, @fathername)


دستور sql خودت رو به شکلی که تو بالا واست نوشتم تبدیل کن. بقیه پارامترها رو خودت تعریف کن.

تو کدهات هم اینکارو بکن.



cmd.Parameters.AddWithValue("@name", "");
cmd.Parameters["@name"].SqlDbType = SqlDbType.NVarChar;

واسه همه‌ی پارامترهات باید همین‌کارو بکنی.