gpt4 book ai didi

c# - 如何在写入表之前检查数据是否存在

转载 作者:行者123 更新时间:2023-12-03 10:00:15 24 4
gpt4 key购买 nike

我有一个 SQL 命令,它将数据插入到 SSMS 中名为 FileTrackLog 的表中。

每次插入重复数据时,我的应用都会崩溃,因为 [Path] 字段是主键

如何检查如何不重新添加已存在的数据,而不会使我的应用程序崩溃?

using (SqlConnection conn = new SqlConnection(connStr))
{
conn.Open();

SqlCommand cmd =
new SqlCommand(
"INSERT INTO [FileTrackLog] (Date, Client, Path, DateAddedToDb) " + // Dont foreget to add "DateAddedToDb" later when going live
" VALUES (@Date, @Client, @Path, @DateAddedToDb)"); // Dont foreget to add @"DateAddedToDb" later when going live
cmd.CommandType = CommandType.Text;
cmd.Connection = conn;
cmd.Parameters.Add("@Date", DbType.DateTime);
cmd.Parameters.Add("@Client", DbType.String);
cmd.Parameters.Add("@Path", DbType.String);
cmd.Parameters.Add(@"DateAddedToDb",DbType.DateTime);

foreach (var extractedRecord in extractedList)
{
cmd.Parameters[0].Value = extractedRecord.Date;
cmd.Parameters[1].Value = extractedRecord.Client;
cmd.Parameters[2].Value = extractedRecord.Path;
cmd.Parameters[3].Value = DateTime.Now;

cmd.ExecuteNonQuery();
}

conn.Close();
}

最佳答案

使用EXISTS,我们可以检查该值是否已存在。

如果该值已存在,则跳过插入进度。

试试这个:

IF NOT EXISTS(SELECT 1 FROM [FileTrackLog] WHERE YourPrimaryKeyColumn = @PrimaryKeyInput)
BEGIN
INSERT INTO [FileTrackLog] (Date, Client, Path, DateAddedToDb)
VALUES (@Date, @Client, @Path, @DateAddedToDb)
END

关于c# - 如何在写入表之前检查数据是否存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50057149/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com