首先,您需要从中获取行Database.TableA
。例如,您可以将 aSqlDataAdapter
与 aDataTable
或 a一起使用SqlDataReader
。
SCOPE_IDENTITY返回插入到同一范围内的标识列中的最后一个标识值。范围是一个模块:存储过程、触发器、函数或批处理。因此,如果两条语句在同一个存储过程、函数或批处理中,则它们属于同一范围。
您可以使用SqlCommand.ExecuteScalar执行插入命令并在一次查询中检索新 ID。
const String sqlSelect = "SELECT COL1,COl2,Col3 FROM TableA WHERE COL1=@COL1;"
const String sqlInsert = "INSERT INTO TableA (COl2,Col3)VALUES (@Col2,@Col3);"
+ "SELECT CAST(scope_identity() AS int)";
using (var con1 = new SqlConnection(db1ConnectionString))
using (var con2 = new SqlConnection(db2ConnectionString))
{
con1.Open();
con2.Open();
using(var selectCommand = new SqlCommand(sqlSelect, con1))
{
selectCommand.Parameters.AddWithValue("@COL1", 4711);
using (var reader = selectCommand.ExecuteReader())
{
if (reader.Read())
{
int newID;
using (var insertCommand = new SqlCommand(sqlInsert, con2))
{
for (int i = 0; i < reader.FieldCount; i++)
{
insertCommand.Parameters.AddWithValue("@" + reader.GetName(i), reader[i]);
}
newID = (int)insertCommand.ExecuteScalar();
}
}
}
}
}