我在C#中运行一个返回一个值(String)的SQL命令.我然后尝试将其保存到变量,但它总是抛出此异常:
System.Data.dll中出现类型'System.InvalidOperationException'的第一次机会异常线程''(0x1bbc)已退出,代码为0(0x0).System.InvalidOperationException:没有数据时读取的尝试无效.在System.Data.SqlClient.SqlDataReader.GetValue(Int32 i)
但是,当我在SQL Server中运行相同的命令时,它肯定会输出一个值.
myCommand = new SqlCommand("SELECT TrialName FROM dbo.CT WHERE NumId='"+TrialId+"'", myConnection);
SqlDataReader dr = myCommand.ExecuteReader();
String TName = dr[0].ToString();
Run Code Online (Sandbox Code Playgroud)
即使我对整个sqlcommand进行硬编码(而不是使用TrialId变量),它仍会抛出异常.这里发生了什么?
在从数据读取器读取之前,您必须调用dr.Read():
myCommand = new SqlCommand("SELECT TrialName FROM dbo.CT WHERE NumId='"+TrialId+"'",
myConnection);
SqlDataReader dr = myCommand.ExecuteReader();
if(dr.Read())
{
String TName = dr[0].ToString();
}
Run Code Online (Sandbox Code Playgroud)
SqlDataReader.Read()使读者前进到下一条记录,并在没有更多记录时返回false.
| 归档时间: |
|
| 查看次数: |
15785 次 |
| 最近记录: |