在做数据库课程设计的时候遇到两个问题,第一个是如何在打开一个数据库连接的情况下如何执行两个select语句,第二个是借书的过程中要涉及多个表,如何在借书失败时,将已经修改的表恢复呢?
       解决方法原来是这样的:
       对于第一个问题:我们可以使用DataReader的NextResult()方法.只需要复给SqlCommand对象两个SQL SELECT语句,调用DataReader的俄ExecuteReader方法时将返回两个结果集,再使用SqlDataReader的Nextresult方法,就可以使数据读取器前进到下一个结果集,这样就实现了一次执行了多条SQL语句.最后关闭SQL连接就OK了.
       看看例子:
ADO.NET 的DataReader 和事务处理SqlConnection sqlconn = new SqlConnection();
ADO.NET 的DataReader 和事务处理        sqlconn.ConnectionString 
= "数据库连接字符串";
ADO.NET 的DataReader 和事务处理
ADO.NET 的DataReader 和事务处理        SqlCommand cmd 
= new SqlCommand();
ADO.NET 的DataReader 和事务处理        cmd.CommandText 
= "SELECT CustomerCode,CustomerName FORM Customer;" + "SELECT EmployeeCode,EmployeeName FORM Employee";
ADO.NET 的DataReader 和事务处理        cmd.Connection 
= sqlconn;
ADO.NET 的DataReader 和事务处理        sqlconn.Open();
ADO.NET 的DataReader 和事务处理        SqlDataReader rd 
= cmd.ExecuteReader();
ADO.NET 的DataReader 和事务处理        
try
        }

      第二个问题:借书过程中,我们要修改图书信息,读者借阅列表,如果中途出错,可数据库已经修改了部分,这显然是不行的.用一个更简单的例子比喻,就像是银行转帐,A先在A账户上划走100元,B再在B帐户上添加100元,可是B银行由于某种原因添加失败,这样转账没有成功,那就需要回滚,将A的操作也注销掉.这样就需要用到事务(Transaction).
      1.使用Connection对象的BeginTransaction方法创建事务;
      2.通过设置Command对象的Transaction属性来把需要在事务中执行的数据库操作命令登记到事务中;
      3.执行Command对象;
      4.Commit事务或者Rollback事务;
代码:
 1ADO.NET 的DataReader 和事务处理        SqlConnection sqlconn = new SqlConnection("数据库连接字符串");
 2ADO.NET 的DataReader 和事务处理        sqlconn.Open();
 3ADO.NET 的DataReader 和事务处理
 4ADO.NET 的DataReader 和事务处理        string insertStr="Inser into Customers(CustomerID,CompanyName) VALUES ('CITIC','农业银行')";
 5ADO.NET 的DataReader 和事务处理        SqlCommand insertCmd = new SqlCommand(insertStr, sqlconn);
 6ADO.NET 的DataReader 和事务处理
 7ADO.NET 的DataReader 和事务处理        string updateStr = "UPDATE Customers SET CompanyName='中国银行' WHERE CustomerID='CITIC'";
 8ADO.NET 的DataReader 和事务处理        SqlCommand updateCmd = new SqlCommand(updateStr, sqlconn);
 9ADO.NET 的DataReader 和事务处理
10ADO.NET 的DataReader 和事务处理        //创建事务
11ADO.NET 的DataReader 和事务处理        SqlTransaction myTrans = sqlconn.BeginTransaction();
12ADO.NET 的DataReader 和事务处理        //将Cmd对象登记到事务中
13ADO.NET 的DataReader 和事务处理        insertCmd.Transaction = myTrans;
14ADO.NET 的DataReader 和事务处理        updateCmd.Transaction = myTrans;
15ADO.NET 的DataReader 和事务处理
16ADO.NET 的DataReader 和事务处理        try
17        }

相关文章:

  • 2021-10-31
  • 2022-12-23
  • 2021-10-29
  • 2021-08-21
  • 2021-10-07
  • 2022-02-05
猜你喜欢
  • 2021-07-04
  • 2021-10-22
  • 2021-08-19
相关资源
相似解决方案