SelectCommand.Connection未初始化

时间:2013-04-24 08:01:12

标签: c# .net sql connection-string sqldatareader

我正在尝试从我的DataBaseOptions类中的此方法访问我的数据库。我正在将它用于ASP.NET进行Web开发。

每当我运行此方法时,在另一个类中,我会收到以下错误:

  

SelectCommand.Connection未初始化

它说错误在第40行。这是我的代码:

(带有“adapter.Fill(dt);”的行是第40行。

private string connectionString = "oop_string"; // Global Variable
private static SqlConnection mycon = new SqlConnection(); // Global Variable
private static SqlCommand mycmd = new SqlCommand(); // Global Variable

public void setupConnection() {
    mycon.ConnectionString = ConfigurationManager.ConnectionStrings[connectionString].ToString();
    mycmd.Connection = mycon;
}

public bool UserExists(string username, string password) {
    setupConnection();

    mycmd.CommandText = "SELECT user_id FROM users WHERE user_username = @username AND user_password = @password";
    mycmd.Parameters.Add("@username", SqlDbType.VarChar).Value = username;
    mycmd.Parameters.Add("@password", SqlDbType.VarChar).Value = password;

    DataTable dt = new DataTable();
    SqlDataAdapter adapter = new SqlDataAdapter(mycmd);

    adapter.Fill(dt);

    if(dt.Rows.Count == 0) {
        return false;
    } else {
        return true;
    }
}

public int getUserID(string username, string password) {
        setupConnection();

        mycmd.CommandText = "SELECT user_id FROM users WHERE user_username = @username AND user_password = @password";
        mycmd.Parameters.Add("@username", SqlDbType.VarChar).Value = username;
        mycmd.Parameters.Add("@password", SqlDbType.VarChar).Value = password;

        SqlDataReader reader = mycmd.ExecuteReader();

        if(reader.Read()) {
            return Convert.ToInt32(reader["user_id"]);
        }

        mycon.Close();
        return 0;
}

如果我尝试从setupConnection()中放入所有内容;到UserExists()的开头;和getUserID();我收到以下错误:

  

ConnectionString属性尚未初始化。

它现在声称,错误在第51行。“SqlDataReader reader = mycmd.ExecuteReader();”。

我的老师和我,已经尝试了一切,谷歌,其他同学,老师。我们无法找到解决方案。

3 个答案:

答案 0 :(得分:2)

未在代码中的任何位置打开连接。还要考虑ecnlosing您的命令以及在using语句

中实现IDisposable的那些对象

答案 1 :(得分:0)

您没有打开连接

    public void setupConnection() {
    mycon.ConnectionString = ConfigurationManager.ConnectionStrings[connectionString].ToString();
    mycon.Open()
    mycmd.Connection = mycon;
}

答案 2 :(得分:0)

在执行尚未给出的查询时,您必须提供连接对象。

如下:

    DataTable dt = new DataTable();
    SqlDataAdapter adapter = new SqlDataAdapter(mycmd,mycon);