PDA

View Full Version : مشکل با SQL Server 2005 در ASP.Net .



hdv212
چهارشنبه 29 آذر 1385, 00:35 صبح
سلام دوستان
من یه جدول ساختم با SqlServer 2005 که دارای سه تا فیلد هستش که دوتاشون جملات فارسی رو ذخیره میکنن .(از نوع nvarchar هستند)
ولی وقتی اطلاعات فارسی به جدول اضافه میشه همه رو به صورت علامت سوال نشون میده .
آیا باید نوع مقدار رو عوض کنم ؟ (توی اس کیو ال 2000 درست بود)
یا توی ASP.Net این طوریه ؟؟
لطفا کمکم کنید ..
مرسی .

سار
چهارشنبه 29 آذر 1385, 08:57 صبح
تو تالار SQL Server بگرد یکی از دوستان یه SP برای حل این مشکل نوشته و شرح خوبی هم داده.

hdv212
چهارشنبه 29 آذر 1385, 20:38 عصر
من که چیزی پیدا نکردم .. فقط یه چندتا کامنت یدا کردم که گفته بود به اول مقادیر یه N اضافه کن که کردم ولی باز مشکل حل نشد تازه N هم تو جدول ذخیره میشد .. در ضمن وقتی به صورت دستی اطلاعات رو وارد اس کیو ال میکنم درست نشون میده .. فکر کنم مشکل از asp.net باشه .. ولی من از utf-8 توی صفحاتم استفاده کردم .. مشکل کجاست ؟؟

hdv212
پنج شنبه 30 آذر 1385, 14:26 عصر
بابا یکی کمک کنه ..

reza_rad
شنبه 02 دی 1385, 07:09 صبح
اینجوری N رو باید استفاده کنید:


insert into table1(name) values(N'تست')

سار
شنبه 02 دی 1385, 09:02 صبح
راستش من خودم هم در بخش SQL Server دنبال چیزی که گفتم گشتم ولی پیدا نکردم.
یادن هست در آنجا مطلبی دیدم که یکی از دوستان SP تهیه کرده بود این مشکل را حل می کرد ولی نتونستم پیداش کنم.
در هر حال راه بالا هم راه خوبی است.

سار
شنبه 02 دی 1385, 11:35 صبح
راه حل یافت شد.
عرض شود که مشکل از آنجایی است که احتمالن شما از فیلد نوع VarChar استفاده می کنید و یا Collate فیلد شما صحیح Set نشده. در هر حال با کد زید میتوانید آن را اصلاح کنید.


alter table [Table Name]
alter COLUMN [Field Name] nvarchar(2000)
COLLATE Latin1_General_CI_AS


میتوانید تغییر Collation را بر روی Database نیز اعمال کنید که باید از دستور Alter Database استفاده کنید. مانند :


alter database [Database Name]
collate Latin1_General_CI_AS

دقت کنید برای این عمل ابتدا دیتابیس را DC کنید.

chaalesh
شنبه 02 دی 1385, 12:00 عصر
با سلام
چرا ارسال اطلاعات به Data base رو با Procedure انجام نمیدید ؟این روش چند مزیت داره یکی اینکه این مشکلتون حل میشه یکی اینکه سریعتر کار میکنه و چند تای دیگر

hdv212
یک شنبه 03 دی 1385, 21:32 عصر
بچه مرسی از جوابتون ..
ولی من Collate مربوط به یکی از فیلدها رو چک کردم و دیدم که از این نوع هست : SQL_Latin1_General_CP1_C1_AS یعنی پیش فرض خود اس کیو ال.
ولی باز مشکلم حل نشد .. باید چکار کرد ؟؟
اون Collate هم که شما گفتید یعنی Latin1_General_CI_AS توی لیستش نیست. همین بالایی که نوشتم هست. منتظر جوابتون هستم .

سار
دوشنبه 04 دی 1385, 08:56 صبح
آیا وقتی در خود SQL Server داده ها را وارد می کنید نیز مشکل دارید؟
منظور زمانی است که در خود SQL Server جدول را باز می کنید.
البته من در 2005 با این کد مشکلم حل شد متاسفاته در مورد 2000 یادم نیست که همین بود یا خیر ولی امتحانش می کردید، فکر نمیکنم مشکلی ایجاد می کرد.
در هر حال اگر به لینک زیر نگاه کنید می بینید که مشکل من با همان کد حل شد. در لینک زیر به قسمت نظرات توجه کنید که در ابتدا به چه صورت ذخیره شده و بعد از تغییر Collate به چه شکل.
http://ariyagroups-3.at.vwdhosting.net/%d8%a7%d8%ae%d8%a8%d8%a7%d8%b1/tabid/53/ctl/Details/mid/369/ItemID/0/Default.aspx

hdv212
دوشنبه 04 دی 1385, 23:14 عصر
ُُسلام به شما ..
من تو این لینک چیزی ندیدم .. در ضمن وقتی داده ها رو در اس کیو ال مستقیما وارد میکنم مشکلی نداره .. فقط از تو ای اس پی دات نت مشکل داره .. هر چی هست مربوط به یونیکد صفحه ای اس پی دات نت هست .. ولی چطوری ؟؟
دوستانی که تو زمینه ی ای اس پی دات نت با اس کیو ال 2005 کار کردن لطفا کمک کنن ..
مرسی

ali1381
چهارشنبه 06 دی 1385, 11:37 صبح
راه حلی که دوستمون گفتن خیلی خوبه چرا از اون استفاده نمی کنید یا از sp استفاده کنید و یا همون 'تست'N را استفاده کنید فکر می کنم مشکلتون حل بشه

amir.NET2
چهارشنبه 06 دی 1385, 11:41 صبح
بابا خب چرا از پارامتر استفاده نمی کنید

روش ساده استفاده از پارامتر هم استفاده از StoredProcedure هست