2016-04-04 46 views
-4

I M使用foreach循環值不應在數據庫重複而從foreach循環在c#插入

這是我的代碼創建計費應用,並插入從DataGridView到數據庫中的數據;

foreach (DataGridViewRow di in dataGridView1.Rows) 
{ 
    con.Open(); 
    cmd = new SqlCommand("insert into bill_history values('" + txtctname.Text + "','" + txtadd.Text + "','" + label1.Text + "','" + label2.Text + "','" + di.Cells[0].Value + "','" + di.Cells[1].Value + "','" + di.Cells[3].Value + "','" + txtsub.Text + "','" + txttx.Text + "','" + txttotal.Text + "','" + txtdic.Text + "','" + txtgdt.Text + "','" + di.Cells[2].Value + "')", con); 
    cmd.ExecuteNonQuery(); 
} 

我的結果是:

invoice no  prductname price/piece total 
     1   ede    10   80 
     1   santoor soap  20   80 
     1    ewe   50   80 

,但我想這個結果發票和總不應該重複plz幫助

invoice no  prductname price/piece total 
     1   ede    10   
        santoor soap  20   
         ewe   50   80 
+1

當您提出問題時請保持清楚。如果您的發票號碼是表格的主鍵,則不應允許重複的值。而不是通過c#代碼處理此問題,以正確地標準化表格。 – Joseph

+0

向我們顯示您的代碼,以便我們可以爲您提供幫助 – Pikoh

+0

沒有任何主鍵bcoz我從發票編號生成序列號。 –

回答

0

你真正想要做的是學習它的權利辦法。你的代碼示例向有經驗的程序員提出了幾個紅旗。

Learn how to normalize your Database and what relations are

enter image description here

而且,你試圖通過ADO.Net訪問數據庫。如果你打算使用這個,那麼please do it the right way在你的SqlCommand對象中使用Paramaters。

更好的是,有一個look into Entity Framework,一個簡單的方法來訪問您的數據庫作爲代碼中的對象。這消除了您的代碼中的Sql查詢。