PDA

View Full Version : حرفه ای: تبدیل Nvarchar به Varbinary



aminaltavista
جمعه 27 مرداد 1391, 22:16 عصر
تو دستور sql ازم خطا میگره و میگه باید nvarchar رو به varbinary تبدیل کنم!

نحوه انجام این کار چگونه است؟ دستور برای آپدیت کردن دیتابیس هست .

ali.bahrami
جمعه 27 مرداد 1391, 22:33 عصر
با دستور ALTER TABLE میتونی type فیلدت را عوض کنی.

ALTER TABLE [tablename]
ALTER COLUMN [columnName] VARBINARY[Max]

aminaltavista
شنبه 28 مرداد 1391, 08:38 صبح
با دستور ALTER TABLE میتونی type فیلدت را عوض کنی.

ALTER TABLE [tablename]
ALTER COLUMN [columnName] VARBINARY[Max]

این کل دستوری هست که برا آپدیت کردن دیتابیسه!


"Update tbUsers set UserName='" + txtUser.Text + "',Password='" + txtPass1.Text + "',Name='" + txtName2.Text + "',Email='" + txtEmail.Text + "'"+
",Operation='"+pi+"'where UserName=" + "'" + Value + "'"+
" Alter Table tbUsers Alter Column Operation Varbinary(Max)";

pi یه متغیر هست که آرایه ای از بایت ها رو در خود نگه میدارد.و operation فیلد از نوع (varbinary(max است که قراره مقدار pi بریزه داخلش
در مورد صداقت دستورات بالا شک ندارم چون از نمونشون برا ذخیره کردن استفاده کردم . فقط نمیدونم چرا این یکی رو ازم خطا میگیره ! چون برا آپدیت هست فکر کنم این جوری میشه! من طبق گفتتون عمل کردم اما باز هم همون خطا رو میده! آیا طور دیگری باید بنویسمش!

ali.bahrami
شنبه 28 مرداد 1391, 10:52 صبح
ببخشید ، من منظور سوالتون را اول دقیق متوجه نشدم.
من فکر کردم توی دیتابیس یه فیلد داری که NVARCHAR هست و میخوای به VARBINARY تبدیل بشه .

دستور شما درسته فقط دو طرف متغیر pi که باینری هست نباید از علامت ' ' استفاده کنی .
چون اینجوری pi را رشته میشناسه.
علامت ' ' را از دو طرف pi حذف کن ، نیازی هم به alter نیست. اگر باز ارور داد متن ارور را بزار.

ali.bahrami
شنبه 28 مرداد 1391, 10:56 صبح
یه مورد دیگه هم الان به نظرم اومد ...
چه جوری میخوای مقدار فیلد UserName را عوض کنی در صورتی که از همون به عنوان شرط هم استفاده کردی !!!!!؟؟؟؟
فیلد UserName را به عنوان کلید در نظر گرفتی ؟

aminaltavista
شنبه 28 مرداد 1391, 16:10 عصر
یه مورد دیگه هم الان به نظرم اومد ...
چه جوری میخوای مقدار فیلد UserName را عوض کنی در صورتی که از همون به عنوان شرط هم استفاده کردی !!!!!؟؟؟؟
فیلد UserName را به عنوان کلید در نظر گرفتی ؟


خیر چیزی که مد نظر دارم اینه که بر حسب UserName بیاد اون رکورد رو ویرایش کنه آخه هر کاربری یه یوزر منحصر به فرد داره واین که چون از شرط استفاده میکنه!
آیا باید براش کلید خارجی تعریف کنم؟ تمامی این مشکلات برا آپدیت هست وگرنا بدون اون هم کار ذخیره و حذف آسونه و من از کلید خارجی استفاده نکردم . راستی ' ' رو برداشتم اما بازم خطا داد یه عکس ازش گرفتم ضمیمه کردمش:

91464

ali.bahrami
شنبه 28 مرداد 1391, 19:57 عصر
دوست عزیز نیازی به کلید نیست ، یعنی این مشکل مربوط به کلید نیست ... شما نام فیلدها را داخل براکت بزار ببین بازم ارور میده ؟
یعنی اینجوری .... مثلا : [username] یا [password]
یعنی همون دسعتور بالا فقط اسم فیلدها را بزار داخل براکت

اون فیلد username را هم از دستور حذف کن


Update tbUsers set [Password]=' txtPass1.Text',[Name]='txtName2.Text ',[Email]=' txtEmail.Text ',[Operation]= pi where [UserName]=' Value'