1

質問があります。このC#を使用してmysqldatabaseにデータを保存したい

private void btnSaveFilm_Click(object sender, EventArgs e)
    {
        try 
        {
            MySqlConnection conn = new MySqlConnection(connection.mysqlconnectionbuilder());
            conn.Open();
            MySqlCommand cmd = conn.CreateCommand();
            cmd.CommandText = "INSERT INTO film(judul,genre,asal,kondisi)"
                + "VALUES(@judul,@genre,@asal,@kondisi)";
            cmd.CommandType = CommandType.Text;
            cmd.Parameters.AddWithValue("@judul", textBoxJudul.Text);
            cmd.Parameters.AddWithValue("@genre", category(comboBoxGenre.SelectedValue.ToString()).ToString());
            cmd.Parameters.AddWithValue("@asal", asal(comboBoxAsal.SelectedValue.ToString()).ToString());
            cmd.Parameters.AddWithValue("@kondisi", checkedStatus());
            cmd.ExecuteNonQuery();
            conn.Close();
        }
        catch(Exception exe) 
        { 
            Console.Write("Error on Save Film : " + exe.ToString() + "\n" +exe.Message);
        }

    }

ただし、エラーSystem.NullReferenceExceptionが表示されます:オブジェクト参照がオブジェクトのインスタンスに設定されていません。

この行40でのエラー:

   cmd.Parameters.AddWithValue("@genre",kategori(comboBoxGenre.SelectedValue.ToString()).ToString());

それを解決する方法は?

4

2 に答える 2

5

あなたのコードをこれに屈折させ、usingステートメントを使用し、

string connString = connectionmysqlconnectionbuilder();
using (MySqlConnection conn = new MySqlConnection(connString)
{
    using (MySqlCommand cmd = new MySqlCommand())
    {
        cmd.Connection = conn;
        cmd.CommandText = @"INSERT INTO film(judul,genre,asal,kondisi) 
                             VALUES(@judul,@genre,@asal,@kondisi)";
        cmd.Parameters.AddWithValue("@judul", textBoxJudul.Text);
        cmd.Parameters.AddWithValue("@genre", kategori(comboBoxGenre.Text).ToString());
        cmd.Parameters.AddWithValue("@asal", asal(comboBoxAsal.Text).ToString());
        cmd.Parameters.AddWithValue("@kondisi", checkedStatus());
        try
        {
            comm.Open();
            cmd.ExecuteNonQuery();
        }
        catch(MySqlException ex)
        (
            Console.WriteLine(ex.ToString());
        )
    }
}

あなたも使うことができます

comboBoxGenre.Text instead of comboBoxGenre.SelectedValue
于 2012-12-31T05:35:51.070 に答える
1

次の 2 つの理由が考えられます。

1.comboBoxGenre.SelectedValue は null になります

2.categori() は null を返します

Convert.ToString()代わりに使用してnullエラーを処理できますvariable.toString()

代わりにこれを他の行にも使用してください

cmd.Parameters.AddWithValue("@genre", Convert.ToString(kategori(Convert.ToString(comboBoxGenre.SelectedValue))));
于 2012-12-31T05:43:44.547 に答える