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

读取student表中的数据打印到屏幕,代码

 1    class Program
 2     {
 3         static void Main(string[] args)
 4         {
 5             string sqlc = @"server=.\sqlexpress;database=MyDataBase15_31;uid=sa;pwd=sa";
 6             using (SqlConnection sqlconn = new SqlConnection(sqlc))
 7             {
 8                 string sql = @" select * from student ";
 9                 using (SqlCommand sqlcom = new SqlCommand(sql))
10                 {
11                     if (sqlconn.State == ConnectionState.Closed) //ConnectionState 枚举 描述与数据源的连接的当前状态。
12                     {    //State 指示 SqlConnection 的状态。 
13 
14                         sqlconn.Open();
15                         //Console.WriteLine("成功");
16                     }
17                     SqlDataReader reader = sqlcom.ExecuteReader();//若要创建 SqlDataReader,必须调用 SqlCommand 对象的 ExecuteReader 方法,而不要直接使用构造函数。
18                     using (reader)
19                     {
20                         if (reader.HasRows)
21                         {
22                             //if (reader.Read())
23                                 while(reader.Read())
24                             {
25                                 Console.WriteLine("{0}{1}{2}{3}{4}",
26                                     reader["sId"],
27                                     reader["sName"],
28                                     reader["sAge"],
29                                     reader["sGender"],
30                                     reader["sClass"]
31                                     );
32                             }
33 
34                         }
35                     }
36                 }
37 
38             }
39 
40         }
41     }

 

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

 

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

using (SqlCommand sqlcom = new SqlCommand(sql)) 

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

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

顺利通过。

 

posted @ 2012-06-07 00:00  net515  阅读(3873)  评论(0编辑  收藏  举报