2016-07-27 2 views
-1

im вставить данные в sql-сервер из gridview данных. У меня проблема с некоторыми нулевыми данными, которые я могу внести, как я могу сделать, что нулевые данные не входят в мой вкладку, и у меня есть некоторые проблемы с некоторыми данными нет входа в мой стол. look image plsигнорировать нулевые данные вставить в sql из представления datagrid

Using con As New SqlConnection(constring) 
    Using cmd As New SqlCommand("INSERT INTO kkpsurabaya VALUES(@Emp_No, @AC_No, @No, @Name, @Auto_Assign, @Date, @Timetable, @on_duty, @off_duty, @clock_in, @clock_out, @Normal, @Realtime, @Late, @Early, @Absent, @OT_Time, @Work_time, @Departmen)", con) 
     cmd.Parameters.AddWithValue("@Emp_No", row.Cells("Emp No#").Value) 
     cmd.Parameters.AddWithValue("@AC_No", row.Cells("AC-No#").Value) 
     cmd.Parameters.AddWithValue("@No", row.Cells("No#").Value) 
     cmd.Parameters.AddWithValue("@Name", row.Cells("Name").Value) 
     cmd.Parameters.AddWithValue("@Auto_Assign", row.Cells("Auto-Assign").Value) 
     cmd.Parameters.AddWithValue("@Date", row.Cells("Date").Value) 
     cmd.Parameters.AddWithValue("@Timetable", row.Cells("Timetable").Value) 
     cmd.Parameters.AddWithValue("@on_duty", row.Cells("on duty").Value) 
     cmd.Parameters.AddWithValue("@off_duty", row.Cells("off duty").Value) 
     cmd.Parameters.AddWithValue("@clock_in", row.Cells("clock in").Value) 
     cmd.Parameters.AddWithValue("@clock_out", row.Cells("clock out").Value) 
     cmd.Parameters.AddWithValue("@Normal", row.Cells("Normal").Value) 
     cmd.Parameters.AddWithValue("@Realtime", row.Cells("Real time").Value) 
     cmd.Parameters.AddWithValue("@Late", row.Cells("Late").Value) 
     cmd.Parameters.AddWithValue("@Early", row.Cells("Early").Value) 
     cmd.Parameters.AddWithValue("@Absent", row.Cells("Absent").Value) 
     cmd.Parameters.AddWithValue("@OT_Time", row.Cells("OT Time").Value) 
     cmd.Parameters.AddWithValue("@Work_time", row.Cells("Work time").Value) 
     cmd.Parameters.AddWithValue("@Departmen", row.Cells("Department").Value) 
     con.Open() 
     Try 
      cmd.ExecuteNonQuery() 

ответ

0

Если row.Cells ("не Emp No #"). Value равно нулю, чем AddWithValue оставит этот параметр вместо ввода DBNull.Value.
Я считаю это огромной ошибкой, но, похоже, я единственный.
В любом случае вы можете исправить это следующим образом:

cmd.Parameters.AddWithValue("@Emp_No", row.Cells("Emp No#").Value ?? (object)DBNull.Value) 
1

Я настоятельно рекомендую делать это по-другому. Вместо того, чтобы перебирать сетку и вручную вставлять каждую строку, создайте DataTable и привяжите ее к сетке. Затем вы можете сделать один вызов метода Update адаптера данных для сохранения партии. Вы можете использовать конструктор команд для генерации InsertCommand адаптера данных или сделать это самостоятельно. В любом случае, вам не нужно беспокоиться о NULL, поскольку он будет обработан для вас. Здесь не приводится пример использования команды строителя:

Private adapter As SqlDataAdapter 
Private builder As SqlCommandBuilder 
Private table As DataTable 

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 
    adapter = New SqlDataAdapter("SELECT * FROM MyTable", "connection string here") 
    builder = New SqlCommandBuilder(adapter) 
    table = New DataTable 

    adapter.FillSchema(table, SchemaType.Source) 

    Me.BindingSource1.DataSource = table 
    Me.DataGridView1.DataSource = Me.BindingSource1 
End Sub 

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 
    Me.BindingSource1.EndEdit() 

    adapter.Update(table) 
End Sub 
+0

им не понять, с и закодировать T.T –

+0

Там нет ничего особенно сложного об этом. Если вы хотите, чтобы я предоставил более конкретное объяснение, дайте более конкретное объяснение тому, что вы не понимаете. – jmcilhinney

+0

@RiskyWahyuN Мы можем только объяснить это вам, мы не можем это понять для вас. Это иногда требует немного старомодных исследований. – Plutonix

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