sql >> Databáze >  >> RDS >> Mysql

výjimka hodnoty null při vstupu do databáze

Abyste se vyhnuli chybám, musíte použít parametrizovaný dotaz, protože zřetězujete explicitní hodnoty řetězce. Také vaše logika je špatná, způsobí to nenormalizovaná data, která bude pro každého správce DB strašné třídit. Místo toho bych zvážil použití tohoto:

SqlConnection conn = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=C:\Users\rnawa_000\Documents\Visual Studio 2013\Projects\Random\Random\sales.mdf;Integrated Security=True");

SqlCommand cmd = new SqlCommand();

cmd.Connection = conn;
conn.Open();

foreach (string item in listBox1.Items)
{
    cmd.CommandText = "insert into salesTB (Date,Time,Name,Quantity,Cost,Purchase) values (@date, @time, @name, @quantity, @cost, @purchase)";

    cmd.Parameters.Add(new SqlParameter("date", date.Text));
    cmd.Parameters.Add(new SqlParameter("time", time.Text));
    cmd.Parameters.Add(new SqlParameter("name", txtName.Text));
    cmd.Parameters.Add(new SqlParameter("quantity", listBox1.Items.Count));
    cmd.Parameters.Add(new SqlParameter("cost", txtCost.Text));
    cmd.Parameters.Add(new SqlParameter("purchase", item.Substring(0,10)));

    cmd.ExecuteNonQuery();
    cmd.Clone();
}

conn.Close();

Není to testováno, ale máte představu.



  1. Existuje nějaký sql-query ke kontrole, zda hodnota existuje nebo není v tabulce db

  2. Jedinečné omezení na jeden sloupec s vyloučením řádku se stejnými hodnotami v jiném

  3. java.sql.SQLException:ORA-00936:chybějící výraz

  4. jednoduchý modul pro ověření přihlášení uživatele s uzlem