2015-10-07 85 views
-2

我將數據從數據網格插入到MySQL表中,並且插入工作正常並且數據被插入,但是最後它給出錯誤,說「sid」不能爲null,儘管數據是插入表中。請檢查我的代碼。MySqlCommand - 參數插入不能正常工作

 MySqlConnection cn = new MySqlConnection(@"connectionstring");   
     string query = "insert into excel_table (sid,name,fathername)values(@sid,@name,@fathername)"; 
     MySqlCommand cmd = new MySqlCommand(query, cn); 
     cn.Open();  

     foreach(DataRowView dr in gridxl.ItemsSource) 
     { 
      cmd.Parameters.Clear(); 
      cmd.Parameters.AddWithValue("@sid", dr["sid"]); 
      cmd.Parameters.AddWithValue("@name", dr["name"]); 
      cmd.Parameters.AddWithValue("@fathername", dr["fathername"]); 
      cmd.ExecuteNonQuery(); 
     } 
     cn.Close(); 
     MessageBox.Show("saved!"); 
+0

(可能)沒有關係,但請注意[AddWithValue'的缺陷](http://blogs.msmvps.com/jcoehoorn/blog/2014/05/12/can-we-stop-using-addwithvalue-已經/) –

+0

那麼,在執行過程結束時'sid' null? –

+0

什麼是「excel_table」表定義? –

回答

1

在C#中,DataGridView的最後一行是總是空

如果你顯示你的數據,每次都會有一個空行,你可以很容易地檢查它,這就是爲什麼你有這個錯誤。

要刪除此空行,你可以使用:

編輯代碼WPF

只需添加

<DataGrid CanUserAddRows="False" IsReadOnly ="true"/> 

<DataGridTextColumn CanUserAddRows="False" IsReadOnly ="true"/> 
在XAML

+0

它是wpf中的數據網格而不是gridview和datagrid項目源文件是excel文件 – codefan

+0

@codefan將此代碼添加到您的XAML中 – VERYNET

+0

@codefan是更好的了嗎? – VERYNET

-1

也許在ItemSource的末尾有空行嗎?

嘗試:

foreach(DataRowView dr in gridxl.ItemsSource) 
    { 
     if (dr["sid"] != null) 
     { 
      cmd.Parameters.Clear(); 
      cmd.Parameters.AddWithValue("@sid", dr["sid"]); 
      cmd.Parameters.AddWithValue("@name", dr["name"]); 
      cmd.Parameters.AddWithValue("@fathername", dr["fathername"]); 
      cmd.ExecuteNonQuery(); 
     } 
    } 
+4

請將此作爲共享文件 – DevelopmentIsMyPassion