1 using (SqlConnection conn = new SqlConnection(connectionString))
2 {
3 conn.Open();
4 using(SqlTransaction trans =conn.BeginTransaction()){
5 SqlCommand cmd =new SqlCommand();
6 try
7 {
8 int indentity = 0;
9 //循环
10 foreach (CommandInfo myDE in SQLStringList)
11 {
12 string cmdText = myDE.CommandText;
13 SqlParameter[] cmdParms = (SqlParameter[])myDE.Parameters;
14 foreach (SqlParameter q in cmdParms)
15 {
16 if (q.Direction == ParameterDirection.InputOutput)
17 {
18 q.Value = indentity;
19 }
20 }
21 PrepareCommand(cmd, conn, trans, cmdText, cmdParms);
22 int val = cmd.ExecuteNonQuery();
23 foreach (SqlParameter q in cmdParms)
24 {
25 if (q.Direction == ParameterDirection.Output)
26 {
27 indentity = Convert.ToInt32(q.Value);
28 }
29 }
30 cmd.Parameters.Clear();
31 }
32 trans.Commit();
33 }
34 catch
35 {
36 trans.Rollback();
37 throw;
38 }
39 }
40 }
1 private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, string cmdText, SqlParameter[] cmdParms)
2 {
3 if (conn.State != ConnectionState.Open)
4 conn.Open();
5 cmd.Connection = conn;
6 cmd.CommandText = cmdText;
7 if (trans != null)
8 cmd.Transaction = trans;
9 cmd.CommandType = CommandType.Text;//cmdType;
10 if (cmdParms != null)
11 {
12
13
14 foreach (SqlParameter parameter in cmdParms)
15 {
16 if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) &&
17 (parameter.Value == null))
18 {
19 parameter.Value = DBNull.Value;
20 }
21 cmd.Parameters.Add(parameter);
22 }
23 }
24 }