我想使用SqlDataReader
从数据库中获取值。当我只在while循环中编写student_id
和program_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();
答案 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
尝试使用
INT16
或int64
Convert(INT16,dr.GetValue(2));
可以转换为指定的类型
Convert(INT64,dr.GetValue(2));
为了获得更好的帮助,您应该发布数据库创建队列