2017-09-04 97 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); 
}