有時候,需要一步作業多個sql語句,或者同時把一句插入到不同的數據庫中。
這個時候,就要考慮語句執行的同步性。
通常,可以採用事務機制來進行控制。
- using System;
- using System.Collections.Generic;
- using System.Text;
- using System.Data;
- using System.Data.OracleClient;
- namespace TransSqlDemo
- {
- class Program
- {
- private string connstr = "User ID=CT_ISD01;Data Source=ORATEST.centurydsp.com;Password=ISD01_CT";
- static void Main(string[] args)
- {
- Program p = new Program();
- p.DbOp();
- Console.WriteLine("Execute Successfully");
- Console.Read();
- }
- private void DbOp()
- {
- using (OracleConnection conn = new OracleConnection(connstr))
- {
- conn.Open();
- OracleTransaction trans = null;
- trans = conn.BeginTransaction(); //事務開始
- OracleCommand cmd = conn.CreateCommand();
- cmd.Transaction = trans; //---
- try
- {
- string sql = "insert into ivan_test(id,name) values(15133,'test')";
- string sql2 = "insert into ivan_test(id,name) values(15134,'test')";
- cmd.CommandText = sql;
- cmd.ExecuteNonQuery();
- cmd.CommandText = sql2;
- cmd.ExecuteNonQuery();
- trans.Commit(); //事務提交
- }
- catch (Exception ex)
- {
- trans.Rollback(); //如果出錯,則回滾
- throw new Exception(ex.Message);
- }
- finally
- {
- conn.Close();
- }
- }
- }
- }
- }