-1

フォーム内に null 値を指定できないデータベースに挿入するためのフォームを作成しようとしていました。入力方法として、テキストボックスとコンボボックスを使用しています。

  using (SqlConnection con = new SqlConnection("Data Source=HRC0;Initial Catalog=users;Integrated Security=True"))
  using (SqlCommand sc = new SqlCommand("if NOT NULL ('" + txtIme.Text + "'," + 
        txtGodina.Text + ",'" + cmbZanr.SelectedItem + "','" + txtRedatelj.Text + "'," + 
        txtTrajanje.Text + ",'" + txtIMDB.Text + "'," + cmbPosuden.SelectedItem + ",'" + 
        txtTrailer.Text + "') insert into filmovi (Ime, Godina, Žanr, Redatelj, " + 
        "[Trajanje (min)], imdb_link, Posuđen , Trailer) values " + 
        "(@Ime, @Godina, @Žanr, @Redatelj,@[Trajanje (min)]," + 
        "@imdb_link,@Posuđen @Trailer )", con))
        {
            con.Open();
            sc.Parameters.AddWithValue("@Ime", txtIme.Text);
            sc.Parameters.AddWithValue("@Godina", txtGodina.Text);
            sc.Parameters.AddWithValue("@Žanr", cmbZanr.SelectedItem);
            sc.Parameters.AddWithValue("@Redatelj", txtRedatelj.Text);
            sc.Parameters.AddWithValue("@[Trajanje (min)]", txtTrajanje.Text);
            sc.Parameters.AddWithValue("@imdb_link", txtIMDB.Text);
            sc.Parameters.AddWithValue("@Posuđen", cmbPosuden.SelectedItem);
            sc.Parameters.AddWithValue("@Trailer", txtTrailer.Text);

            int o = sc.ExecuteNonQuery();
            if (o == -1)
            {
                MessageBox.Show("You didn't fill in all the textboxes!");
                this.Hide();
                new Dodaj().Show();
            }
            else
            {
                MessageBox.Show("The movie was added!");
                con.Close();
                this.Hide();
                new AdminMod().Show();
            }
        }
    }

誰かがこのコードを修正するのを手伝ってくれることを望んでいました。

4

2 に答える 2

2

nullを実行する前に、値を簡単に確認できますquery。このようなもの

if(!String.IsNullOrWhiteSpace(txtIme.Text) && !String.IsNullOrWhiteSpace(txtGodina.Text)....
{
   // do your work
}

else
{
   MessageBox.Show("You didn't fill in all the textboxes!");
   this.Hide();
   new Dodaj().Show();
}
于 2013-06-02T18:48:46.850 に答える
0

IF NOT NULLは、SQL コマンドの有効な構文ではありません。このチェックは、クエリを実行する前に C# コードで行う必要があります。また、コマンドには単純な名前を使用してください。フィールド名を 1 対 1 で一致させる必要はありません

// To simplify your code put the checks in a private function that return true if the
// the inputs are okay or false if not....
if(CheckValidInputs())
{
    using (SqlConnection con = new SqlConnection(.......)
    // Just the insert statement
    using (SqlCommand sc = new SqlCommand("insert into filmovi " + 
          "(Ime, Godina, Žanr, Redatelj, " + 
          "[Trajanje (min)], imdb_link, Posuđen , Trailer) values " + 
          "(@Ime, @Godina, @Žanr, @Redatelj, @Trajanje," + 
          "@imdb,@Posuđen @Trailer)", con))
    {
        ... execute and check the return
    }
}
else
   ... message for invalid inputs
于 2013-06-02T18:50:26.877 に答える