Windows 窗体
一组用于开发图形用户界面的 .NET Framework 托管库。
113 个问题
以下代码适用于单个 sql 语句,如果我需要处理父子表怎么办,例如,
product table product details table
please help ~
public static void ExecuteNonQuery(string commandText)
{
using (SqlCommand command = new SqlCommand())
{
// Set up the connection
SqlConnection connection = DBConnection.SqlConn;
command.Connection = connection;
// Start a local transaction
SqlTransaction transaction = connection.BeginTransaction();
command.Transaction = transaction;
try
{
command.CommandType = CommandType.Text;
command.CommandText = commandText;
command.ExecuteNonQuery();
transaction.Commit();
}
catch (SqlException e)
{
transaction.Rollback();
MessageBox.Show(e.ToString());
}
}
}
Note:此问题总结整理于:Is there a proper way to use Sql Helper class for Parent-Child tables
我们可以在第一个 sql 语句中添加一个输出子句。
然后使用 ExecuteScalar 获取其 ID,然后将其用于第二个 SQL 语句。
请尝试这是否能满足您的需求:
string connString = @"";
using (SqlConnection connection = new SqlConnection(connString))
{
connection.Open();
using (SqlCommand command = new SqlCommand("insert into ScoreTable OUTPUT Inserted.ID values(4,'Tom',84,54,65)", connection))
{
SqlTransaction transaction = connection.BeginTransaction();
command.Transaction = transaction;
try
{
int insertedRowID = (int)command.ExecuteScalar();
command.CommandText = "update ScoreTable set Name = @name where id = @id";
command.Parameters.Add("@name", System.Data.SqlDbType.NVarChar).Value = "UpdatedName";
command.Parameters.Add("@id", System.Data.SqlDbType.Int).Value = insertedRowID;
command.ExecuteNonQuery();
transaction.Commit();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
transaction.Rollback();
}
}
}
如果回复有帮助,请点击“接受答案”并点赞。 注意:如果您想接收此线程的相关电子邮件通知,请按照我们文档中的步骤启用电子邮件通知。