获取错误无法将参数值从SqlParameter转换为String。 [英] getting error Failed to convert parameter value from a SqlParameter to a String.
本文介绍了获取错误无法将参数值从SqlParameter转换为String。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在数据库中插入值时出现以下错误
无法转换参数值字符串的SqlParameter。
I got the following error while insert value in the database
Failed to convert parameter value from a SqlParameter to a String.
cmd = new SqlCommand("insert into user_senditem(user_senditem_id,username,user_id,department_id,attached_files,subject,message,compl_nature,compl_type,group_id,apartment_id,area_id,date_time,type,created_on,created_by,Image) values(@usendid,@username,@userid,@deptid,@attached,@subject,@message,@cmplnature,@comptype,@groupid,@apartmentid,@areaid,@datetime,@type,@createdon,@createdby,@image2)", conn);
SqlParameter usendid = new SqlParameter("@usendid", SqlDbType.VarChar, 50);
usendid.Value = txtUserSentId.Text;
cmd.Parameters.Add(usendid);
SqlParameter username = new SqlParameter("@username ", SqlDbType.VarChar, 50);
username.Value = Session["username"];
cmd.Parameters.Add(username);
SqlParameter userid = new SqlParameter("@userid", SqlDbType.VarChar, 50);
userid.Value = Session["id"];
cmd.Parameters.Add(userid);
SqlParameter deptid = new SqlParameter("@deptid", SqlDbType.VarChar, 50);
deptid.Value = "Admin";
cmd.Parameters.Add(deptid);
SqlParameter attached = new SqlParameter("@attached", SqlDbType.VarChar, 50);
attached.Value = uploadedDocument;
cmd.Parameters.Add(attached);
SqlParameter subject = new SqlParameter("@subject", SqlDbType.VarChar, 50);
subject.Value = txtSubject.Text;
cmd.Parameters.Add(subject);
SqlParameter message = new SqlParameter("@message", SqlDbType.VarChar, 300);
message.Value = txtMessage.Text;
cmd.Parameters.Add(message);
SqlParameter cmplnature = new SqlParameter("@cmplnature", SqlDbType.VarChar, 50);
cmplnature.Value = "Complaint";
cmd.Parameters.Add(cmplnature);
SqlParameter comptype = new SqlParameter("@comptype", SqlDbType.VarChar, 50);
comptype.Value = ddl_ComplType.SelectedItem;
cmd.Parameters.Add(comptype);
SqlParameter groupid = new SqlParameter("@groupid", SqlDbType.VarChar, 50);
groupid.Value = Session["group_id"];
cmd.Parameters.Add(groupid);
SqlParameter apartmentid = new SqlParameter("@apartmentid", SqlDbType.VarChar, 50);
apartmentid.Value = Session["apartment_id"];
cmd.Parameters.Add(apartmentid);
SqlParameter areaid = new SqlParameter("@areaid", SqlDbType.VarChar, 50);
areaid.Value = Session["area_id"];
cmd.Parameters.Add(areaid);
SqlParameter datetime = new SqlParameter("@datetime", SqlDbType.DateTime);
datetime.Value = lblDatetime.Text;
cmd.Parameters.Add(datetime);
SqlParameter type = new SqlParameter("@type", SqlDbType.VarChar, 50);
type.Value = "N";
cmd.Parameters.Add(type);
SqlParameter createdon = new SqlParameter("@createdon", SqlDbType.VarChar, 50);
createdon.Value = DateTime.Now;
cmd.Parameters.Add(createdon);
SqlParameter createdby = new SqlParameter("@createdby", SqlDbType.VarChar, 50);
createdby.Value = SystemInformation.UserName;
cmd.Parameters.Add(createdby);
SqlParameter image2 = new SqlParameter("@image2", SqlDbType.Binary, filelen);
image2.Value = buffer;
cmd.Parameters.Add(image2);
cmd.ExecuteNonQuery();
推荐答案
你没有告诉我们哪个SQLParameter导致错误。但我确实注意到,在将日期转换为SQLParameter之前,您没有将日期转换为DateTime格式。
You didn't tell us which SQLParameter caused the error. I did notice, though, that you did not convert the date to DateTime format before putting it into the SQLParameter.
SqlParameter datetime = new SqlParameter("@datetime", SqlDbType.DateTime);
datetime.Value = DateTime.Parse(lblDatetime.Text);
cmd.Parameters.Add(datetime);
注意:我的示例没有错误检查。用户可能以不正确的格式输入日期。您应该进行错误检查以防止这种情况。
我还发现了将DateTime类型值分配给VarChar类型的位置。我通过将参数类型更改为DateTime来更正此问题。
Note: My example does no error checking. It is possible that the user enters a date in an incorrect format. You should have error checking to prevent that.
I also found where you were assigning a DateTime type value to a VarChar type. I corrected that by changing the parameter type to DateTime.
SqlParameter createdon = new SqlParameter("@createdon", SqlDbType.DateTime, 50);
createdon.Value = DateTime.Now;
cmd.Parameters.Add(createdon);
只是一张便条......
更简单的做法就是说
cmd.Parameters.AddWithValue(createdon,DateTime.Now);
Just a note...
Shorter way of doing this is just by saying
cmd.Parameters.AddWithValue("createdon", DateTime.Now);
实际上是什么问题意味着我在编码中使用了uploaddocument ...那个文件是以二进制格式存储在db..tats wat中得到这个错误...谢谢你们..
Actually what is the problem means i have using uploaddocument in my coding...that document was store in binary format in db..tats wat getting this error...thanks guys..
这篇关于获取错误无法将参数值从SqlParameter转换为String。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文