我正在开发VS13和SQL Server 2012中的项目,我遇到了一个小问题。我似乎无法从我的数据库中读取数据。每当我尝试对用于读取数据的SqlDataReader
对象执行任何操作时,它都会抛出异常。
我得到的例外是InvalidOperationException
。
看看我的这段代码,我用SQL查询作为参数调用此函数,并将返回的对象存储在另一个SqlDataReader
对象中。
private SqlDataReader reader (string sqCommand)
{
myConnection.Open();
string string1;
string1 = sqCommand;
SqlDataReader a = null;
try
{
SqlCommand Newcommand = new SqlCommand(string1, myConnection);
a = Newcommand.ExecuteReader();
}
catch (Exception e)
{
MessageBox.Show(e.ToString());
}
myConnection.Close();
if (a.Read()) //**statement 1**
return a;
else
return null;
}
我在上面的代码中标记的语句1中以及我在对象a或接收它的对象上执行的每个操作中都获得了异常。
有人可以告诉我我的代码有什么问题或提供任何其他解释吗?如果需要更多代码的其他部分来查找错误,我可以提供它。
感谢您提供的时间和帮助。 :)
答案 0 :(得分:4)
当您使用SqlDataReader
时,您的连接需要保持打开状态。 SqlDataReader
的更常规用法如下:
private List<object> Reader(string sqCommand)
{
using (SqlConnection myConnection = new SqlConnection(ConnectionString))
{
myConnection.Open();
using (SqlCommand cmd = new SqlCommand(sqCommand, myConnection))
using (SqlDataReader reader = cmd.ExecuteReader())
{
List<object> list = new List<object>();
while (reader.Read())
{
list.Add(reader[0]);
}
return list;
}
}
}