2014-01-09 45 views
2

我有一個datagridview,我想保存到mysql數據庫。
I'm能夠插入的第一行但之後它給我一個錯誤保存datagridview到mysql

「MySql.Data.MySqlCliente.MySqlException (0X80004005):參數'@鱈魚已經被定義).. ..」

try 
{ 
    string config = "server=localhost; userid = root; database = dbName"; 
    MySqlConnection con = new MySqlConnection(config); 
    string query = "INSERT INTO infoplu(cod,sec,fam,nr) VALUES (@cod,@sec,@fam,@nr)"; 

    MySqlCommand cmd = new MySqlCommand(query, con); 
    con.Open(); 

    for (int row = 0; row < dgExcelData.Rows.Count; row++) 
    {      
     cmd.Parameters.AddWithValue(
      "@cod", dgExcelData.Rows[row].Cells[0].Value.ToString()); 
     cmd.Parameters.AddWithValue(
      "@sec", dgExcelData.Rows[row].Cells[1].Value.ToString()); 
     cmd.Parameters.AddWithValue(
      "@fam", dgExcelData.Rows[row].Cells[2].Value.ToString()); 
     cmd.Parameters.AddWithValue(
      "@nr", dgExcelData.Rows[row].Cells[6].Value.ToString()); 

     cmd.ExecuteNonQuery(); 
     MessageBox.Show("sucess"); 
    } 

    con.Close(); 
} 
catch (MySqlException er) 
{ 
    MessageBox.Show("Error:" + er.ToString()); 
} 

任何人都明白這個錯誤? 謝謝

回答

1
cmd.Parameters.Clear() 

這應該是你需要的。該錯誤是由添加一個已經存在的參數引起的。添加參數

+0

標記爲答案,如果有幫助=) – Coops

+0

優秀的解決問題....你爲我節省了很多時間。謝謝 –

0

因爲你for聲明中每一個循環,你試試喲添加已添加到您的MySqlCommand已經完全相同的參數之前

調用此。

作爲替代方案,您可能需要使用SqlParameterCollection.Clear方法來清除參數;

for (int row = 0; row < dgExcelData.Rows.Count; row++) 
{     
    cmd.Parameters.AddWithValue("@cod", dgExcelData.Rows[row].Cells[0].Value.ToString()); 
    cmd.Parameters.AddWithValue("@sec", dgExcelData.Rows[row].Cells[1].Value.ToString()); 
    cmd.Parameters.AddWithValue("@fam", dgExcelData.Rows[row].Cells[2].Value.ToString()); 
    cmd.Parameters.AddWithValue("@nr", dgExcelData.Rows[row].Cells[6].Value.ToString()); 

    cmd.ExecuteNonQuery(); 
    cmd.Parameters.Clear(); 
    MessageBox.Show("sucess"); 
} 
for循環結束

,或者您可能需要創建新的MySqlCommand頂部您for循環一樣的;

for (int row = 0; row < dgExcelData.Rows.Count; row++) 
{ 
    MySqlCommand cmd = new MySqlCommand(query, con);     
    cmd.Parameters.AddWithValue("@cod", dgExcelData.Rows[row].Cells[0].Value.ToString()); 
    cmd.Parameters.AddWithValue("@sec", dgExcelData.Rows[row].Cells[1].Value.ToString()); 
    cmd.Parameters.AddWithValue("@fam", dgExcelData.Rows[row].Cells[2].Value.ToString()); 
    cmd.Parameters.AddWithValue("@nr", dgExcelData.Rows[row].Cells[6].Value.ToString()); 

    cmd.ExecuteNonQuery(); 
    MessageBox.Show("sucess"); 
} 
+0

謝謝我剛剛解決了我的問題 –

+0

@ user3061846你很受歡迎。 –

+0

這是另一種方式,我不知道它是否更有效 – Coops