2013-07-09 2 views
0

Я использую vb.net, и я хочу вставить строку в таблицу db «adwPays» из моей формы окна. это мой код: Dim CC, EngName, FreName, LanCode As String Dim DialCode As IntegerКак вставить строку в таблицу db из vb.net

CC = txtCC.Text 
    EngName = txtEN.Text 
    FreName = txtFN.Text 
    LanCode = txtLC.Text 
    DialCode = txtDC.Text 


    Dim MyConn As New SqlConnection("Server=(local);Database=dbAjout;Integrated Security=True") 
    Dim query As String 
    query = "INSERT INTO adwPays (CC, Anglais,Francais,CodeLangue,IndicInter) VALUES (' " & CC & "','" & EngName & "','" & FreName & "','" & LanCode & "','" & DialCode & " ');" 

    Dim cmd As New SqlCommand(query, MyConn) 

    MyConn.Open() 
    cmd.ExecuteScalar() 
    MyConn.Close() 

но его дает мне эту ошибку «Необработанное исключение типа«System.Data.SqlClient.SqlException 'произошел в System.Data.dll

Дополнительная информация: Строковые или двоичные данные будут усечены. Заявление было прервано. "

любая помощь?

+0

Я также пробовал cmd.ExecuteNonQuery(), но его не работает !!! – user2550171

ответ

0

Использование параметризованных запросов как этот

Dim query = "INSERT INTO adwPays (CC, Anglais,Francais,CodeLangue,IndicInter) " & 
      "VALUES (@cc, @ename, @fname, @lan, @dial)" 
Using MyConn = New SqlConnection("Server=(local);Database=dbAjout;Integrated Security=True") 
Using cmd = New SqlCommand(query, MyConn) 
    cmd.Parameters.AddWithValue("@cc", CC) 
    cmd.Parameters.AddWithValue("@ename", EngName) 
    cmd.Parameters.AddWithValue("@fname", FreName) 
    cmd.Parameters.AddWithValue("@lan", LanCode) 
    cmd.Parameters.AddWithValue("@dial", DialCode) 
    MyConn.Open() 
    cmd.ExecuteNonQuery() 
End Using 
End Using 

Использование параметризованных запросов позволяет избежать проблем с Sql Инъекции и очищает текст команды из кавычек форматирования вокруг строки и даты, а также пусть рамки кода передать правильный десятичная точка для числовых типов, когда это необходимо

Я также добавил Using Statement вокруг SqlConnection и SqlCommand, чтобы убедиться, что объекты закрыты и уничтожены. Все параметры передаются как строки, это может быть неправильно, если какое-либо из полей вашей базы данных не имеет тип текста.

+0

большое спасибо steve !!! его работа: D – user2550171

0

Похоже, что у вас есть значение String, которое больше, чем позволяет размер базы данных. Вы можете проверить тип и размер каждого из следующих полей:

  • куб.см
  • ENAME
  • Fname
  • Lan

Теперь перекрестные ссылки эти размеры с тем, что значения в поля текстовых полей, из которых вы вытаскиваете их из пользовательского интерфейса.

Мои деньги находятся на одном из тех, которые превышают пределы размера базы данных.

Если это так, вам необходимо ввести проверку длины, прежде чем пытаться сохранить базу данных.

Смежные вопросы