打开数据库的类:
public class CCUtility
{
public CCUtility(object parent)
{
//
// TODO: 在此处添加构造函数逻辑
//
SQLOpen();
}
public SqlConnection Connection;
public void SQLOpen()
{
SqlConnection Connection=new SqlConnection();
Connection.ConnectionString="Data Source=tony\\tony;Integrated Security=SSPI;Initial Catalog=Northwind;";
Connection.Open();
}
public void SQLClose()
{
if(Connection!=null)
Connection.Close();
} }
调用的程序:
SqlCommand cmd=new SqlCommand("select firstname from employees",ccu.Connection);
SqlDataReader sa;
ccu.SQLOpen();
sa=cmd.ExecuteReader();
错误提示:
ExecuteReader: Connection 属性尚未初始化。

解决方案 »

  1.   

    connection是一个局部变量,仅在被声明的函数中有效。要初始化类中的同名函数,必须加上this或删去函数内部的声明代码修改如下:
    public void SQLOpen()
    {
    this.Connection=new SqlConnection();
    this.Connection.ConnectionString="Data Source=tony\\tony;Integrated Security=SSPI;Initial Catalog=Northwind;";
    this.Connection.Open();
    }
      

  2.   

    基础错误:
    成员函数中使用了局部变量而不是public成员变量,自然是错误了
    把 “ SqlConnection Connection=new SqlConnection();  “
    改成  “ Connection=new SqlConnection();   "
      

  3.   

    public class CCUtility
    {
    public CCUtility(object parent)
    {
    //
    // TODO: 在此处添加构造函数逻辑
    //
    SQLOpen();
    }
    public SqlConnection Connection;
    public void SQLOpen()
    {
             Connection=new SqlConnection();  Connection.ConnectionString="Data Source=tony\\tony;Integrated Security=SSPI;Initial Catalog=Northwind;";
    Connection.Open();
    }
    public void SQLClose()
    {
    if(Connection!=null)
    Connection.Close();
    } }因为你外面用的是public 的connection,而在方法内你又声明了一个同名的connection,所以
      public的失效了。
      所以public 的connection 没有被实例化。
      

  4.   

    可以了,谢谢
    但是还有个问题,请再帮忙一下
    if(sa.HasRows)
    {
    Session["loginid"]=sa.GetSqlString(0);
    LMessage.Text=Session["loginid"]+"登录成功!";
             }
    错误提示:
    在没有任何数据时进行无效的读取尝试。