如何使用SqlDataReader提取值?

时间:2016-06-13 06:47:09

标签: c# sql-server sqldatareader

我想使用SqlDataReader从数据库中获取值。当我只在while循环中编写student_idprogram_id时,此代码运行正常,但它会在session_id上抛出错误:

  

指定的演员表无效

代码:

string student_name = items.Cells["student_name"].Value.ToString();

string query_select_student = "SELECT student_id, program_id, session_id, department_id FROM student WHERE student_name = '" + student_name + "' ";

SqlDataReader dr = DataAccess.selectDataReader(query_select_student);

while (dr.Read())
{
      student_id = (int)dr.GetValue(0);
      program_id = (int)dr.GetValue(1);
      session_id = (int)dr.GetValue(2);
      department_id = (int)dr.GetValue(3);
}
dr.Close();

2 个答案:

答案 0 :(得分:1)

我怀疑您从数据库获取的session_id值是而不是 int或值可能 null

试试这个。

while (dr.Read())
{
      student_id = (int)dr.GetValue(0);
      program_id = (int)dr.GetValue(1);
      session_id  = dr.IsDBNull(2)? default(int) : (int)dr.GetValue(2);          
      department_id = (int)dr.GetValue(3);
}

我强烈建议使用调试器,设置一个断点,看看究竟收到了什么。

答案 1 :(得分:0)

您的价值不是INT32尝试使用

转换为INT16int64

Convert(INT16,dr.GetValue(2));

可以转换为指定的类型

Convert(INT64,dr.GetValue(2));

为了获得更好的帮助,您应该发布数据库创建队列