私はc#を使用して.netでwebAppを構築しています。バックアップファイル(csvファイル)をアップロードするコードに問題があります。
これはコードです:
protected void UploadBackup(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection(dataset1.ConnStr);
string filepath = ""+Server.MapPath("/backups/Species.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 = "Species";
bc.BatchSize = dt.Rows.Count;
con.Open();
bc.WriteToServer(dt);
bc.Close();
con.Close();
}
このコードは、ボタンをクリックしてデータベースに接続し、Speciesテーブルのすべての行を復元すると、正常に機能します。
これが私の問題です。このテーブルに値がある場合、主キーがすでに取得されているため、エラーが返されます。私がやりたいのは、いくつかの主キーがすでに取得されている場合、csvファイルからの新しい値でこの行を更新し、主キーが取得されていない場合は、元のコードと同じように動作します(行を追加するだけです) )、行がすでに存在するかどうかを確認するコードをどこに書く必要がありますか?