获取错误无法将参数值从SqlParameter转换为String。 [英] getting error Failed to convert parameter value from a SqlParameter to a String.

查看:195
本文介绍了获取错误无法将参数值从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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆