PDA

View Full Version : خطا در ذخیره null در فیلد sql از نوع ((varbinary(MAX)



tara1367
چهارشنبه 07 آبان 1393, 10:52 صبح
سلام
من یک جدول دارم در دیتابیس sql که یکی از فیلدهاش از نوع varbinary هست و در اون فایل ذخیره می شه. حالا برای کاربران اجباری نیست. ممکنه لازم باشه فایلی ذخیره شه و ممکنه هم خالی باشه. ولی وقتی آرایه null میشه نمی ذاره null ذخیره بشه. کسی می تونه کمک کنه؟
با سپاس
کد ذخیره فایل:
byte[] ReadBytes(string sPath) {


try
{


byte[] Data = null;


FileInfo fInfo = new FileInfo(sPath);


long numbytes = fInfo.Length;


FileStream fStream = new FileStream(sPath, FileMode.Open, FileAccess.Read);


BinaryReader br = new BinaryReader(fStream);


Data = br.ReadBytes((int)numbytes);


return Data;


}


catch
{


return null;


}
}







private void buttonX9_Click(object sender, EventArgs e)
{
try
{
SqlDataAdapter da = new SqlDataAdapter("SELECT UCode FROM TUsername WHERE Username='" + cmbUsername.Text + "'",
conn = new SqlConnection(codes.ReturnConnectionstring()));
DataTable dt = new DataTable();
da.Fill(dt);


int isumAt = 0;
b = ReadBytes(FilePath);
if (lblAttach1.Visible == true)
{
isumAt++;
stExtension = Path.GetExtension(FilePath).ToString();
}
else
{
//b = null;
lblAttach1.Text = "";
stExtension = "";
FilePath = "";
}


SqlCommand cmd = new SqlCommand("INSERT INTO TMessages (MType,Sender,SenderTime," +
"Receiver,ReceiverTime,Importance,Description,Resul t,ShowInTable,SCode,RCode," +
"Subject,MControlCode,FileData,FileName,FileExtensi on,FilePath,AttachNo) VALUES(" +
"N'" + cmbMType.Text + "',N'" + sUsername + "',N'" +
codes.PCalender() + " " + DateTime.Now.ToShortTimeString() + "',N'" + cmbUsername.Text + "',''," +
"N'" + cmbImportance.Text + "',N'" + txtDesc.Text + "',N'خوانده نشده','T','" + sUCode + "'," +
"'" + dt.Rows[0][0].ToString() + "',N'" + txtSubject.Text + "','',@File," +
"'" + lblAttach1.Text + "','" + stExtension + "'," +
"'" + FilePath + "','" + isumAt + "')",
conn = new SqlConnection(codes.ReturnConnectionstringMsg()));
conn.Open();


cmd.Parameters.Add(new SqlParameter("@File", (object)b));

cmd.ExecuteNonQuery();
cmd.Dispose();
conn.Close();


MessageBox.Show("پیام ارسال گردید");
}
catch (Exception ex)
{
MessageBox.Show("خطا در ارسال پیام");
MessageBox.Show(ex.ToString());
return;
}
}

samanelf
چهارشنبه 07 آبان 1393, 13:06 عصر
ارور رو بذارید

و تو اس کیو ال اجازه null وارد کردن رو دادین ؟

eshaghrahimy
چهارشنبه 07 آبان 1393, 18:52 عصر
قبل از insert یا آپدیت باید SET ANSI_NULLS off را بنویسی

tara1367
شنبه 10 آبان 1393, 09:21 صبح
ارور رو بذارید

و تو اس کیو ال اجازه null وارد کردن رو دادین ؟


تشکر بله در اس کیو ال اجازه null وارد کردن رو دادم. ارور:
The parameterized query '(@File nvarchar(4000))INSERT INTO TMessages (MType,Sender,Sender' expects the parameter '@File', which was not supplied.