如何检查 OleDbDataReader 是否为空?
How to check if OleDbDataReader is empty?
这是我根据 Class 字段值 select Maximum RollNo 使用的代码。
但是当Table中没有关于Class字段的数据时。然后就产生了Error。
using (var conn = new OleDbConnection(DatabaseObjects.ConnectionString))
{
conn.Open();
command = new OleDbCommand("select max(RollNo) as Roll from Students where Class = '"+cmbClass.Text+"'", conn);
OleDbDataReader dr = command.ExecuteReader();
if (!dr.IsDBNull(0))
{
while (dr.Read())
{
i = Convert.ToInt32(dr["Roll"]);
}
}
InvalidOperation 异常 正在发生。如果 Table 中的数据可用,我想获取 RollNo 的值。如果 Table 中没有数据,我该怎么办?
你正在颠倒步骤:
- 打开连接;
- 检查是否有通信数据;
- 检查值是否不为空;
- 读取数据;
试试这个:
while (dr.Read())
{
if (!dr.IsDBNull(0))
{
i = Convert.ToInt32(dr["Roll"]);
}
}
当您只参加单个值时,使用 executeScalar 获取值;
conn.Open();
command = new OleDbCommand("select isnull(max(RollNo),-1) as Roll from Students where Class = '"+cmbClass.Text+"'", conn);
int rollNo = (int) command.ExecuteScallar();
if(rollno !=-1)
{
// TODO :
}
这是我根据 Class 字段值 select Maximum RollNo 使用的代码。 但是当Table中没有关于Class字段的数据时。然后就产生了Error。
using (var conn = new OleDbConnection(DatabaseObjects.ConnectionString))
{
conn.Open();
command = new OleDbCommand("select max(RollNo) as Roll from Students where Class = '"+cmbClass.Text+"'", conn);
OleDbDataReader dr = command.ExecuteReader();
if (!dr.IsDBNull(0))
{
while (dr.Read())
{
i = Convert.ToInt32(dr["Roll"]);
}
}
InvalidOperation 异常 正在发生。如果 Table 中的数据可用,我想获取 RollNo 的值。如果 Table 中没有数据,我该怎么办?
你正在颠倒步骤:
- 打开连接;
- 检查是否有通信数据;
- 检查值是否不为空;
- 读取数据;
试试这个:
while (dr.Read())
{
if (!dr.IsDBNull(0))
{
i = Convert.ToInt32(dr["Roll"]);
}
}
当您只参加单个值时,使用 executeScalar 获取值;
conn.Open();
command = new OleDbCommand("select isnull(max(RollNo),-1) as Roll from Students where Class = '"+cmbClass.Text+"'", conn);
int rollNo = (int) command.ExecuteScallar();
if(rollno !=-1)
{
// TODO :
}