对象引用未设置为对象的实例,sql查询不可运行

本文关键字:查询 sql 运行 实例 设置 对象 对象引用 | 更新日期: 2023-09-27 18:19:27

我确信Sql语法是正确的,因为它是一个合法的查询。然而,我以前从未遇到过这个问题。

private void button1_Click(object sender, EventArgs e)
{
    string ett = textBox1.Text;
    if (ett == "")
    {
        MessageBox.Show("Du måste fylla i UID, vilket du finner i användarlistan.");
        return;
    }
    try
    {
        if (connect.State == ConnectionState.Open)
        {
            MySqlCommand cmd = new MySqlCommand();
            cmd.Connection = connect;
            cmd.CommandText = "DELETE FROM Users WHERE uid = @uid";
            cmd.Parameters.AddWithValue("@uid", textBox1.Text);
            MySqlDataReader accessed = cmd.ExecuteReader();
            MessageBox.Show("Användaren borttagen.");
        }
        else
        {
            MessageBox.Show("Något gick tyvärr fel, kontakta systemadministratören.");
        }
    }
    catch (Exception ex)
    {
        { MessageBox.Show(ex.Message); }
    }
}

对象引用未设置为对象的实例,sql查询不可运行

问题可能与此有关:

        {
            MySqlCommand cmd = new MySqlCommand();
            cmd.Connection = connect;
            cmd.CommandText = "DELETE FROM Users WHERE uid = @uid";
            cmd.Parameters.AddWithValue("@uid", textBox1.Text);
            MySqlDataReader accessed = cmd.ExecuteReader();
            MessageBox.Show("Användaren borttagen.");
        }

尝试

        {
            MySqlCommand cmd = new MySqlCommand();
            cmd.Connection = connect;
            cmd.CommandType = CommandType.Text
            cmd.CommandText = "DELETE FROM Users WHERE uid = @uid";
            cmd.Parameters.AddWithValue("@uid", textBox1.Text);
            cmd.ExecuteNonQuery
            MessageBox.Show("Användaren borttagen.");
        }

现在您已经在注释中向我们展示了您的全部代码,问题显而易见。

您已经编写了一个初始化、设置和打开数据库连接的方法;以及另一种在点击按钮时运行的方法,它使用它

然而,在您的代码中,没有任何地方可以调用初始化数据库连接的方法,因此当您尝试使用它时,它是没有设置的——这真的很明显。

我可以看出,你认为你是在通过检查其State属性来检查连接是否正常工作,但对未初始化的引用类型调用任何类型的方法或属性访问器都不起作用,你会得到你一直得到的NullReferenceException

要修复此问题,请在尝试使用连接之前,通过按下按钮调用连接设置方法:

private void button1_Click(object sender, EventArgs e)
{
    string ett = textBox1.Text;
    if (ett == "")
    {
        MessageBox.Show("Du måste fylla i UID, vilket du finner i användarlistan.");
        return;
    }
    try
    {
        db_connection(); //added this line
        if (connect.State == ConnectionState.Open)
        {
            MySqlCommand cmd = new MySqlCommand();
            cmd.Connection = connect;
            cmd.CommandText = "DELETE FROM Users WHERE uid = @uid";
            cmd.Parameters.AddWithValue("@uid", textBox1.Text);
            MySqlDataReader accessed = cmd.ExecuteReader();
            MessageBox.Show("Användaren borttagen.");
        }
        else
        {
            MessageBox.Show("Något gick tyvärr fel, kontakta systemadministratören.");
        }
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }   
}

您尚未定义变量"connect"。