您的位置:首页 > 其它

ExecuteReader: Connection 属性尚未初始化。错误解决

2012-06-07 00:00 786 查看
读取student表中的数据打印到屏幕,代码

class Program
{
static void Main(string[] args)
{
string sqlc = @"server=.\sqlexpress;database=MyDataBase15_31;uid=sa;pwd=sa";
using (SqlConnection sqlconn = new SqlConnection(sqlc))
{
string sql = @" select * from student ";
using (SqlCommand sqlcom = new SqlCommand(sql))
{
if (sqlconn.State == ConnectionState.Closed) //ConnectionState 枚举 描述与数据源的连接的当前状态。
{    //State 指示 SqlConnection 的状态。

sqlconn.Open();
//Console.WriteLine("成功");
}
SqlDataReader reader = sqlcom.ExecuteReader();//若要创建 SqlDataReader,必须调用 SqlCommand 对象的 ExecuteReader 方法,而不要直接使用构造函数。
using (reader)
{
if (reader.HasRows)
{
//if (reader.Read())
while(reader.Read())
{
Console.WriteLine("{0}{1}{2}{3}{4}",
reader["sId"],
reader["sName"],
reader["sAge"],
reader["sGender"],
reader["sClass"]
);
}

}
}
}

}

}
}


F6生成成功,F5报异常:ExecuteReader: Connection 属性尚未初始化。

问题分析:看到Connection,想到数据库连接失败,通过//Console.WriteLine("成功");排除错误,仔细验证SQL语句,没有问题,百度了一下有说代码中多次调用DataReader的函数,可能是因为打开太多的链接,但是检查后还是没有发现问题,这时突然看到问题所在:

using (SqlCommand sqlcom = new SqlCommand(sql))

SqlCommand()缺少参数,真是大意,改正后

using (SqlCommand sqlcom = new SqlCommand(sql,sqlconn))

顺利通过。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: