【问题标题】:C# Error: “Fill: SelectCommand.Connection property has not been initialized.”C# 错误:“填充:SelectCommand.Connection 属性尚未初始化。”
【发布时间】:2015-07-01 12:37:21
【问题描述】:

我有这个错误的问题:

C# 错误:“填充:SelectCommand.Connection 属性尚未被 初始化。”

我查看了其他线程,但人们使用它构建了他们的客户端并没有什么不同。 我不知道,为什么会出现这个错误。我想它在SelectOsoba 的某个地方是错误的。 我需要在 DataGridView 中显示数据。

我的代码是:

class Vrstva
{
    public static SqlConnection myConnection;
    public static string connstr;
    static DataTable t;

    public static void createConnect1()
    {
        connstr = ConfigurationSettings.AppSettings["local1"];
        Vrstva.myConnection = new SqlConnection(connstr);
    }
    public static void createConnect2()
    {
        connstr = ConfigurationSettings.AppSettings["local2"];
        Vrstva.myConnection = new SqlConnection(connstr);
    }
    public static void createConnect3()
    {
        connstr = ConfigurationSettings.AppSettings["local3"];
        Vrstva.myConnection = new SqlConnection(connstr);
    }
    public static void openConn()
    {
        Vrstva.myConnection.Open();
    }
    public static void closeConn()
    {
        Vrstva.myConnection.Close();
    }
    public static SqlDataAdapter Query(string command)
    {
        return new SqlDataAdapter(command, Vrstva.myConnection);
    }
    public static void NonQuery(string command)
    {
        SqlCommand Command = new SqlCommand(command, Vrstva.myConnection);
        Command.ExecuteNonQuery();
    }
    public static bool login1(string login, string password)
    {
        string login1 = ConfigurationSettings.AppSettings["login1"];
        string password1 = ConfigurationSettings.AppSettings["password1"];
        if (login == login1 && password == password1)
        {
            return true;
        }
        return false;

    }
    public static bool login2(string login, string password)
    {
        string login1 = ConfigurationSettings.AppSettings["login2"];
        string password1 = ConfigurationSettings.AppSettings["password2"];
        if (login == login1 && password == password1)
        {
            return true;
        }
        return false;

    }
    public static bool login3(string login, string password)
    {
        string login1 = ConfigurationSettings.AppSettings["login3"];
        string password1 = ConfigurationSettings.AppSettings["password3"];
        if (login == login1 && password == password1)
        {
            return true;
        }
        return false;
    }

    ////vypis tabulku prislusniku
    public static DataTable SelectOsoba()
    {
        t = new DataTable();
        Query("Select * from Osoba;").Fill(t);
        return t;
    }
    //Insert
    public static void PridejOsoba(string Jmeno, string Prijmeni, string Povolani, int Poc_Det)
    {
        NonQuery("Insert into Osoba(Jmeno,Prijmeni,Povolani,Poc_Det) values('" + Jmeno + "','" + Prijmeni + "','" + Povolani + "','" + Poc_Det + "');");
    }
}

【问题讨论】:

  • 除了这是一种非常糟糕的包装数据库操作的方式(一切都是静态的!糟糕!什么样的程序会使用它?)你可能还没有创建连接。我不知道,因为您没有显示调用代码,但我猜是这样。

标签: c# sql datagridview client


【解决方案1】:

这个错误很可能被抛出,因为你在这一行的连接:

return new SqlDataAdapter(command, Vrstva.myConnection); 

尚未初始化。

在尝试查询之前,您必须调用您的 createConnectX() 方法之一。

【讨论】: