2017-09-04 93 views
0

我寫了下面的代碼來查詢SQL Server數據庫中的東西。第一個閱讀器中的查詢有效,但不在第二個閱讀器中。我似乎無法弄清楚爲什麼這兩種閱讀器的方法完全一樣。任何幫助深表感謝。C#SQL Server數據庫查詢

這些命令的參數在上面的函數中給出,它不在代碼中。

using (SqlConnection conn = new SqlConnection()) 
{ 
    conn.ConnectionString = "..."; 
    conn.Open(); 

    SqlCommand command = new SqlCommand("SELECT stuff FROM table WHERE Belegnummer= @n and [email protected]", conn); 

    command.Parameters.Add(new SqlParameter("n", nr)); 
    command.Parameters.Add(new SqlParameter("j", jahr)); 

    using (SqlDataReader reader = command.ExecuteReader()) 
    { 
     while (reader.Read()) 
     { 
      r = reader.GetInt32(0); 
     } 
    } 

    command.Dispose(); 

    SqlCommand command2 = new SqlCommand("SELECT stuff1, stuff2, stuff3 FROM sameTable WHERE BelID = @rnr", conn); 
    command2.Parameters.Add(new SqlParameter("rnr", r)); 

    using (SqlDataReader reader2 = command2.ExecuteReader()) 
    { 
     while (reader2.Read()) 
     { 
      // variables are defined somewhere above 
      b = reader2.GetInt32(0); 
      j = reader2.GetInt32(1); 
      m = reader2.GetInt32(2); 
     } 
    } 
} 
+0

什麼是你所得到的例外呢? –

+5

另外定義「不起作用」 - 你期待的結果是什麼,以及你變得怎麼樣? –

+0

有什麼不成? –

回答

1

請張貼錯誤信息,以及。

您可能會遇到DbNull值的問題。檢查的DBNull您解析與前值:

SqlReader.IsDBNull(column) 

或者將數據加載到一個DataTable:

DataTable dt = new DataTable(); 

using (SqlDataReader reader = cmd1.ExecuteReader()) 
{ 
    dt.Load(reader); 
}