sql >> Database >  >> RDS >> Sqlserver

Fout bij het invoegen van datum en tijd in SQL Server 2005 datetime c#?

Je moet ALTIJD gebruik geparametriseerd query's - dit voorkomt SQL-injectie-aanvallen, is beter voor de prestaties en vermijdt onnodige conversies van gegevens naar strings om deze alleen maar in de database in te voegen.

Probeer iets als dit:

// define your INSERT query as string *WITH PARAMETERS*
string insertStmt = "INSERT into survey_Request1(sur_no, sur_custname, sur_address, sur_emp, sur_date, sur_time, Sur_status) VALUES(@Surname, @SurCustName, @SurAddress, @SurEmp, @SurDate, @SurTime, @SurStatus)";

// put your connection and command into "using" blocks
using(SqlConnection conn = new SqlConnection("-your-connection-string-here-"))
using(SqlCommand cmd = new SqlCommand(insertStmt, conn))
{
    // define parameters and supply values
    cmd.Parameters.AddWithValue("@Surname", textBox9.Text.Trim());
    cmd.Parameters.AddWithValue("@SurCustName", textBox8.Text.Trim());
    cmd.Parameters.AddWithValue("@SurAddress", textBox5.Text.Trim());
    cmd.Parameters.AddWithValue("@SurEmp", textBox1.Text.Trim());
    cmd.Parameters.AddWithValue("@SurDate", dateTimePicker2.Value.Date);
    cmd.Parameters.AddWithValue("@SurTime", dateTimePicker2.Value.Time);
    cmd.Parameters.AddWithValue("@SurStatus", "Active");

    // open connection, execute query, close connection again
    conn.Open();
    int rowsAffected = cmd.ExecuteNonQuery();
    conn.Close();
}

Het is ook raadzaam om uw tekstvakken een naam te geven met meer expressieve namen. textbox9 vertelt me ​​niet echt welk tekstvak dat is - textboxSurname zou VEEL . zijn beter!




  1. MySQL-query om datums te selecteren waarbij het veld NULL is of de velddatumwaarde niet groter is dan een andere datum

  2. MySQL IN met LIKE

  3. Hoe de 900 sleutellengte-limietindex op de kolom met datatype varchar(4096) in SQL Server 2005 op te lossen?

  4. SQL:unie van twee tabellen die geen volledige kolomovereenkomst hebben