不确定如何使用SQL参数化查询来解决此问题。我现在可以将数据(此方案中的客户)插入到SQL表中,让数据库生成并处理主键ID,而不是手动插入ID以及其余属性。
我的问题是如何使用参数化查询将此自动生成的ID插入到其相关的外键列的另一个表中?例如,如果第二个表用于预订,则必须获取进行预订的客户的ID值(Customer表)并将其插入Booking表中的FK ID列。
我已经在线查看了代码和Stack Overflow,但它并不是我想要的,因为他们要么在数据库设计器中使用SQL程序,要么处理手动插入的ID。
我写的示例代码:
//Insert CustomerID into TestTable
public void AddCustomerIdToForeignKeyColumnInNewTable()
{
string connectionString = ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString;
SqlConnection myConnection = new SqlConnection(connectionString);
String query;
query = "INSERT INTO TestTable VALUES (@CustomerID)";
SqlCommand dbCommand = new SqlCommand(query, myConnection);
dbCommand.Parameters.AddWithValue("@CustomerID", whateverIdValueGoesHere);
try
{
myConnection.Open();
dbCommand.ExecuteNonQuery();
myConnection.Close();
}
catch (Exception ex)
{
Exception e = ex;
myConnection.Close();
}
}
答案 0 :(得分:0)
您可以使用:
Select SCOPE_IDENTITY();
在插入声明之后。
换句话说:
query = "INSERT INTO TestTable VALUES (@CustomerID); SELECT SCOPE_IDENTITY();";
然后:
var cid= dbCommand.ExecuteScalar();
cid将包含数据库生成的客户ID的值