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

摘要:
12{//State表示SqlConnection.1314sqlconn.Open();15//Console.WriteLine;16}17SqlDataReaderreader=sqlcom ExecuteReader();//若要创建SqlDataReader,必须调用SqlCommand对象的ExecuteReader方法,而不是直接使用构造函数。

读取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))

顺利通过。

免责声明:文章转载自《ExecuteReader: Connection 属性尚未初始化。错误解决》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇gcc编译选项【转】K8S从入门到放弃系列-(3)部署etcd集群下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

springboot-quartz 实现动态添加,修改,删除,暂停,恢复等功能

任务相关信息:springboot-quartz普通任务与可传参任务 一、任务实体类 packagecloud.app.prod.home.quartz; importjava.io.Serializable; importjava.util.Date; /*** Author : YongBo Xie </br> * File Nam...

javascript base64 编码,兼容ie6789

用Javascript进行base64编码,在高版本的IE浏览器(IE9以上版本),和firefox,chrome浏览器里是非常方便的。这些浏览器的window对象中内置了base64的编码和解码方法。 var base64String = window.btoa(string) ;//编码 var string = window.atob(base64s...

Java 并发——多线程基础

Thead类与Runnable接口Java的线程,即一个Thread实例。 Java的线程执行过程有两种实现方式: 子类继承Thread类,并且重写void run()方法。 自定义类实现Runnable接口,并且实现void run()方法。并在Thead构造时,将Runnable实例放入Thead。 Thread类 创建一个新线程必须实例化一个Th...

C#.NET 中的类型转换

C# 出来也有些日子了,最近由于编程的需要,对 C# 的类型转换做了一些研究,其内容涉及 C# 的装箱/拆箱/别名、数值类型间相互转换、字符的 ASCII 码和 Unicode 码、数值字符串和数值之间的转换、字符串和字符数组/字节数组之间的转换、各种数值类型和字节数组之间的转换、十六进制数输出以及日期型数据的一些转换处理,在这里与大家分享—— 1. 装箱...

wxpython ItemContainer

ItemContainer 是 很多可以添加string item的部件的父类,封装很多有用的方法,可以用来获取部件的被选中item 的string 如wx.ListBox ,wx.CheckListBox,wx.Choice,wx.ComboBox。 这些部件可以添加string ,并且内部对它们索引访问。  string GetString(self,...

SQL Sever 2008性能分析之执行计划

一直想找一些关于SQL语句性能调试的权威参考,但是有参考未必就能够做好调试 2的工作。我深信实践中得到的经验是最珍贵的,书本知识只是一个引导。本篇来源于《Inside Microsoft SQL Server 2008》,有经验的高手尽管拍砖把。 这个部分将讲解一些性能分析工具,这些性能分许主要关注在执行计划。 缓存执行计划 SQL Server 2008...