【发布时间】:2016-09-27 10:04:58
【问题描述】:
我有一个将 csv 文件导入 sql server 数据库的小程序 但是当您按两次按钮或其他内容时,它会添加重复项。 我需要它,这样当有重复时它会跳过那个。 如果有人可以帮助我编写代码,那就太棒了。
编辑:我注意到有人说我需要在按钮工作时禁用该按钮,而这是解决一件事的方法,我还希望如果数据库中已有某些内容,它将在相同时跳过该部分在 csv 文件中与在数据库中一样。
代码:
private void button1_Click(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection(@"server=localhost;Initial Catalog=klantbestand;Integrated Security=SSPI;");
string filepath = @"C:\clients TEST.csv";
StreamReader sr = new StreamReader(filepath);
string line = sr.ReadLine();
string[] value = line.Split(';');
DataTable dt = new DataTable();
DataRow row;
foreach (string dc in value)
{
dt.Columns.Add(new DataColumn(dc));
}
while (!sr.EndOfStream)
{
value = sr.ReadLine().Split(';');
if (value.Length == dt.Columns.Count)
{
row = dt.NewRow();
row.ItemArray = value;
dt.Rows.Add(row);
}
}
SqlBulkCopy bc = new SqlBulkCopy(con.ConnectionString, SqlBulkCopyOptions.TableLock);
bc.DestinationTableName = "GegevensCSV";
bc.BatchSize = dt.Rows.Count;
con.Open();
bc.WriteToServer(dt);
bc.Close();
con.Close();
}
【问题讨论】:
-
在按钮工作时制作某种互斥锁或禁用按钮不是更安全的选择吗?
-
这不仅仅是当你按下按钮两次的时候。当数据库中已经有一个值与 csv 文件中的值相同时。
标签: c# sql-server csv