簡體   English   中英

對象引用未設置為對象的實例,sql 查詢無法運行?

[英]object reference not set to an instance of an object, sql query not runnable?

我很確定 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); }
    }
}

問題可能與此有關:

        {
            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”。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM