【发布时间】:2017-11-01 09:30:43
【问题描述】:
我正在使用此代码从表 PatientInfo 中获取最大 ID:
private void LoadID()
{
string query = "SELECT MAX(ID) FROM PatientInfo";
using (SqlConnection cn = new SqlConnection(constr))
using (SqlCommand cmd = new SqlCommand(query, cn))
{
cn.Open();
SqlDataReader reader = cmd.ExecuteReader();
if (reader.HasRows)
{
while (reader.Read())
{
txtid.Text = reader["ID"].ToString();
}
}
else
{
// other code
}
reader.Close();
cn.Close();
}
}
因为我必须先检查是否存在任何记录,所以我使用reader.HasRows。之后,代码应该获取 ID 并将其放入文本框。但事实并非如此。它正在抛出IndexOutOfRangeException。我不知道为什么。
在我的数据库中,我插入了一条记录。但它仍然在两种条件下给出相同的结果(1.当我在表中没有数据时和 2.当我在表中有数据时)
其次,我正在尝试在表格中手动输入数据,但它什么也没做,并说出以下内容
因此,没有添加任何数据
【问题讨论】:
-
请添加此问题中使用的编程语言,我认为它是 C#
-
使用 ExectueScalar 可以大大简化您的代码。
-
哎呀。是的,它的 c#
-
@Carra。如何使用 ExecuteScalar 检查数据是否存在?
-
@user3837889:你没有——如果你的表中绝对没有数据,那么
.ExecuteScalar()将返回NULL——检查一下就完成了
标签: c# sql-server exception reader