ExecuteNonQuery&& ExecuteQuery 區別


 前些日子作一些數據項目的時候 在ADO.NET 中處理 ExecuteNonQuery()方法時,總是通過判斷其返回值是否大於0來判斷操作時候成功 。但是實際上並不是這樣的,好在處理的數據操作多時 修改, 插入, 刪除,否則的話問題就有點打了,都是些基礎的知識,但是很重要個人覺得有必要記下來。

     ExecuteNonQuery()方法主要用戶更新數據,通常它使用Update,Insert,Delete語句來操作數據庫,其方法返回值意義:對於 Update,Insert,Delete  語句 執行成功是返回值為該命令所影響的行數,如果影響的行數為0時返回的值為0,如果數據操作回滾得話返回值為-1,對於這種更新操作 用我們平時所用的是否大於0的判斷操作應該沒有問題而且比較好,但是對於其他的操作如對數據庫結構的操作,如果操作成功時返回的卻是-1,這種情況跟我們平時的思維方式有點差距所以應該好好的注意了,例如對數據庫共添加一個數據表的Create操作,當創建數據表成功時返回-1,如果操作失敗的話(如數據表已經存在)往往會發生異常,所以執行這種操作時最好用try--catch--語句來容錯。

  例如用ExecuteNonQuery()方法執行create操作

   

    SqlConnection conn = new SqlConnection("Data Source=.;Initial Catalog=PSDB;Integrated Security=SSPI");
        
   string str = "CREATE TABLE aaa ( " +
  "[ID] [int] IDENTITY (1, 1) NOT NULL , " +
  "[BasicID] [int] NULL ," +
  "[AdoptedName] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ," +
  "[AdoptedSex] [char] (2) COLLATE Chinese_PRC_CI_AS NULL ," +
  "[AdoptBirthday] [smalldatetime] NULL ," +
  "[AdoptedType] [varchar] (100) COLLATE Chinese_PRC_CI_AS NULL ," +
  "[ApprTime] [smalldatetime] NULL ," +
  "[Remark] [varchar] (500) COLLATE Chinese_PRC_CI_AS NULL " +
") ON [PRIMARY]   ";     

  SqlCommand comm = new SqlCommand(str, conn);
        int i = 10;
        try
        {
            conn.Open();
            i = comm.ExecuteNonQuery();
            conn.Close();
        }
        catch (Exception ex)
        {
            Response.Write(ex.Message);
        }

        Response.Write(i.ToString());

       如果執行成功的話 返回的值為-1,如果數據表已經存在的話返回異常:數據庫中已存在名為 'aaa' 的對象。

 

 

返回包含給定查詢所生成數據的 ResultSet 對象;永遠不能為 null,如果沒有查詢到信息,返回一個next()為false的ResultSet 對象
 while(rs.next()) 來判斷是不是正確的
 while(rs.next()){
     System.out.println("姓名:"+rs.getString("stuName")+"\t年齡:"+rs.getString("stuScore"));
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM