我正在尝试使用数据集和存储过程从 sql 表中获取数据,在执行过程后数据集应该只包含一个值(我正在获取 id 号,id 号是我的 Costumers 表中的主键所以每个应该只有一个)。IsCostumerIDTaken 存储过程只返回它作为参数的 id。如果它找到它,它会返回它。如果没有,我不知道它会做什么,也许返回 0。
public static bool IsCostumerIDTaken(string id)
{
SqlConnection conObj = GetConnection();
SqlCommand cmdObj = new SqlCommand("IsCostumerIDTaken", conObj);
cmdObj.CommandType = CommandType.StoredProcedure;
cmdObj.Parameters.Add("@ID", SqlDbType.NVarChar).Value = id;
SqlDataAdapter da = new SqlDataAdapter(cmdObj);
DataSet ds = new DataSet();
da.Fill(ds);
if (ds.Tables[0].Rows[0][0].ToString() != id)
return false;
return true;
}
在我的一个页面中执行此命令后
Label1.Text = DAL.IsCostumerIDTaken(TextBox1.Text).ToString();
我收到此错误:
说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。
异常详细信息:System.IndexOutOfRangeException:位置 0 处没有行。
Source Error: Line 73: DataSet ds = new DataSet(); Line 74: da.Fill(ds); Line 75: if (ds.Tables[0].Rows[0][0].ToString() != id) Line 76: return false; Line 77: return true;
这里到底有什么问题?我没有正确地从数据集中提取数据吗?