如果我有大量数据(100000多行)并且在向表中添加更多数据时不想复制数据,那么使用的语法是正确的?
这是我的插入数据按钮的样子:
private void button8_Click(object sender, EventArgs e)
{
string constring = @"DELETED FOR SECURITY REASONS";
using (SqlConnection con = new SqlConnection(constring))
{
for (int i = 0; i < dgvEmployees.Rows.Count - 1; i++)
{
var str = @"INSERT INTO USERSTable VALUES ('" +
dgvEmployees.Rows[i].Cells["Issuer"].Value + "', '" +
dgvEmployees.Rows[i].Cells["Customer"].Value + "'," +
dgvEmployees.Rows[i].Cells["Card"].Value + ",'" +
dgvEmployees.Rows[i].Cells["License plate No"].Value +
dgvEmployees.Rows[i].Cells["Transactiondate"].Value + "', '" + dgvEmployees.Rows[i].Cells["Product description (com.)"].Value + "', '" +
dgvEmployees.Rows[i].Cells["Quantity"].Value + "', '" +
dgvEmployees.Rows[i].Cells["Gross CC"].Value + "', '" +
dgvEmployees.Rows[i].Cells["VAT1"].Value + "', '" +
dgvEmployees.Rows[i].Cells["Voucher"].Value + "', '" +
dgvEmployees.Rows[i].Cells["Mileage"].Value + "', '" +
dgvEmployees.Rows[i].Cells["Additional info"].Value + "', '" + dgvEmployees.Rows[i].Cells["Supply country"].Value + "', '" + dgvEmployees.Rows[i].Cells["Site Town"].Value + "', '" +
dgvEmployees.Rows[i].Cells["Product DEL"].Value + "', '" +
dgvEmployees.Rows[i].Cells["Unitprice"].Value + "', '" +
dgvEmployees.Rows[i].Cells["Amount"].Value + "', '" +
dgvEmployees.Rows[i].Cells["Discount"].Value + "', '" +
dgvEmployees.Rows[i].Cells["Surcharge"].Value + "', '" +
dgvEmployees.Rows[i].Cells["VAT"].Value + "', '" +
dgvEmployees.Rows[i].Cells["Suppliercurrency"].Value + "', '" + dgvEmployees.Rows[i].Cells["Invoice No"].Value + "', '" +
dgvEmployees.Rows[i].Cells["Invoice date"].Value + "', '" +
dgvEmployees.Rows[i].Cells["Invoiced?"].Value + "', '" +
dgvEmployees.Rows[i].Cells["Vat2010"].Value + "', '" +
dgvEmployees.Rows[i].Cells["State"].Value + "', '" +
dgvEmployees.Rows[i].Cells["Supplier"].Value + "', '" +
dgvEmployees.Rows[i].Cells["Cost 1"].Value + "', '" +
dgvEmployees.Rows[i].Cells["Cost 2"].Value + "', '" +
dgvEmployees.Rows[i].Cells["Reference No"].Value + "', '" +
dgvEmployees.Rows[i].Cells["Recordtype"].Value + "', '" +
dgvEmployees.Rows[i].Cells["Amount other"].Value + "', '" +
dgvEmployees.Rows[i].Cells["Is listprice ?"].Value + "', '" + dgvEmployees.Rows[i].Cells["Date to"].Value + "', '" +
dgvEmployees.Rows[i].Cells["Final Trx."].Value + "', '" +
dgvEmployees.Rows[i].Cells["LPI"].Value + "', '" + "');";
try
{
using (SqlCommand com = new SqlCommand(str, con))
{
con.Open();
com.ExecuteNonQuery();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
con.Close();
}
MessageBox.Show("Records uploaded.");
}
}
任何帮助将不胜感激......
谢谢...
答案 0 :(得分:0)
如果您选择在数据库端解决它,只需将唯一约束添加到其评论中提到的apomene的唯一行。
对于软件方面,有太多的解决方案,例如使用DataTable.GetChanges来获取添加和编辑的行,或者(如果您只是让用户添加行不能编辑),您可以保留旧行count然后在你的for语句中使用它,如:
for (int i = oldRowsCount-1; i < dgvEmployees.Rows.Count - 1; i++)
编辑:出于安全原因(也更容易),我强烈建议您不为您的查询使用String.Format方法,请使用{{ 3}}
编辑2:感谢评论帕特里克我错过了#34;不是&#34;字。