这是我用来根据类字段值选择最大滚动号的代码。 但是当表中没有关于类字段的数据时。然后生成错误。
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"]);
}
}
无效操作异常。如果表中有数据可用,我想获取 RollNo 的值。如果表中没有数据,我该怎么办?
您正在反转步骤:
- 打开连接;
- 检查是否有即将到来的数据;
- 检查该值是否不为空;
- 读取数据;
试试这个:
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 :
}