PDA

View Full Version : مشکل در ورود Null value در ( Varbinary(Max در Sql 2005



hdv212
سه شنبه 21 فروردین 1386, 02:15 صبح
سلام بچه ها
من در حال نوشتن یه برنامه دبیرخانه هستم که اسناد رو به صورت عکس با پسوند JPG میگیره و در درون فیلدی از نوع (VarBinary(max که در Sql 2005 هست به صورت byte[] میریزه.

منتها مشکل اینجاس که ممکنه هر رکوردی دارای این فیلد نباشه (یعنی این فیلد رو وارد نکنه) پس باید در موقع مثلا Insert یه مقدار Null قرار بگیره کد من اینه :

command.CommandText = "UPDATE t_Archive SET DateSource=@DateSource, TypeMailID=@TypeMailID,Doc=@Doc WHERE ArchiveID = @ArchiveID";

SqlParameter p16;
if (this.openFileDialog1.FileName == string.Empty)
p16 = new SqlParameter("@Doc", System.DBNull.Value);
else
p16 = new SqlParameter("@Doc", this.ReadBitmap2ByteArray(this.openFileDialog1.Fil eName));

دقت کنید در قسمت تعریف پارامتر، در قسمت اول مقدار System.DBNull.Value در دیتابیس قرار میگیره که یعنی سندی وجود نداره(اگه سندی وجود داشته باشه از تعریف دوم استفاده میکنه)

مشکل اینجاس در زمان Update کردن جدول این پیامو میده :

System.Data.SqlClient.SqlException: Implicit conversion from data type nvarchar to varbinary(max) is not allowed. Use the CONVERT function to run this query. .....

مشکل از کجاس ؟ ومن چطوری به دیتابیس بگم که این فیلد رو نمیخواد Uopdate یا insert کنی ؟؟
مرسی

iranrose63
سه شنبه 21 فروردین 1386, 07:33 صبح
من برای اینکه مقدار Null را به فیلد از نوع(varbinary(MAX بدهم از کد زیر استفاده کردم و مشکلی هم ندارم
;sqlCommand1.Parameters.Add("@param", SqlDbType.VarBinary).Value = SqlBinary.Null
امیدوارم درست متوجه مشکلت شده باشم

hdv212
سه شنبه 21 فروردین 1386, 17:47 عصر
دستت درد نکنه .. مشکلم حل شد .. مرسی .. خدا خیرت بده

iranrose63
چهارشنبه 22 فروردین 1386, 07:27 صبح
خواهش می کنم خوشحالم مشکلت حل شد

maisam_s
پنج شنبه 25 خرداد 1391, 21:11 عصر
با تشکر از iranrose63 ، فقط قبلش در سی شارپ using System.Data.SqlTypes; آورده شود.:لبخندساده: