0

寻找一种简单的方法来检查表中是否已存在主键,然后再将其插入表中。其中 Fname 是表中的主键。

SqlConnection conn = new SqlConnection(connStr);
conn.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
cmd.CommandText = "INSERT INTO [table] ([firstName], [lastName]) VALUES ('" + txtFName.Text + "','" + txtLName.Text + "')";        

cmd.ExecuteNonQuery();
conn.Close();
4

1 回答 1

2

作为一般规则,您应该尝试插入。如果它们的键存在,则 dbms 将返回错误。捕获该错误。

无论如何,您都必须捕获错误,因为除了主键约束之外还有很多事情可以阻止插入行。其中

  • 任何其他类型的约束,如外键约束、检查约束等。
  • 磁盘错误。
  • 网络错误。
  • 飓风。

捕获错误不会失去任何效率。

  • 插入(无错误)需要往返数据库。
  • 插入(有错误,您捕获)需要往返数据库,不计算您可能需要做的任何事情来纠正该错误。无论如何,如果您先检查,则必须进行所有更正。
  • Check-then-insert 需要两次往返数据库。

如果您尝试插入已经存在主键的行,某些平台可以合并数据。最著名(或最臭名昭著,取决于您的观点)是MySQL 的 ON DUPLICATE KEY UPDATE

于 2012-11-01T01:41:03.763 回答