Deenuji Ответов: 3

ошибка получения не удалось преобразовать значение параметра из SqlParameter в строку.


Я получил следующую ошибку при вставке значения в базу данных


Не удалось преобразовать значение параметра из SqlParameter в строку.


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();

3 Ответов

Рейтинг:
7

Deenuji

На самом деле проблема заключается в том, что я использую uploaddocument в своем кодировании...этот документ был сохранен в двоичном формате в db..tats wat получает эту ошибку...спасибо, ребята..


Рейтинг:
22

Mike Meinz

Вы не сказали нам, какой SQLParameter вызвал ошибку. Однако я заметил, что вы не преобразовали дату в формат DateTime, прежде чем поместить ее в SQLParameter.


SqlParameter datetime = new SqlParameter("@datetime", SqlDbType.DateTime);
datetime.Value = DateTime.Parse(lblDatetime.Text);
cmd.Parameters.Add(datetime);


Примечание: В моем примере нет проверки ошибок. Вполне возможно, что пользователь вводит дату в неправильном формате. Вы должны иметь проверку ошибок, чтобы предотвратить это.


Я также нашел, где вы присваивали значение типа DateTime типу VarChar. Я исправил это, изменив тип параметра на DateTime.
SqlParameter createdon = new SqlParameter("@createdon", SqlDbType.DateTime, 50);
    createdon.Value = DateTime.Now;
    cmd.Parameters.Add(createdon);


Deenuji

я делаю изменения в соответствии с решением ur все еще получаю ту же ошибку

Mike Meinz

Без более подробной информации дальнейшая отладка вашей программы для вас невозможна. У вас есть один или несколько параметров SQLParameters, которые не соответствуют их связанному объявлению базы данных. Вы можете использовать интерактивный отладчик Visual Studio для пошагового просмотра кода, чтобы определить, какой именно. Кроме того, вы могли бы использовать Улучшить Вопрос кнопка для добавления Create Table SQL DDL к вашему вопросу, чтобы мы могли сравнить каждый SQLParameter с объявлением соответствующего столбца для вас.

Рейтинг:
2

Dave963

Просто записка...
Более короткий способ сделать это - просто сказать

УМК.Параметры.AddWithValue ("createdon", DateTime. Now);