Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Erreur lors de l'insertion de la date et de l'heure dans SQL Server 2005 datetime c# ?

Vous devriez TOUJOURS utiliser paramétré requêtes - cela empêche les attaques par injection SQL, améliore les performances et évite les conversions inutiles de données en chaînes juste pour les insérer dans la base de données.

Essayez quelque chose comme ceci :

// 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();
}

Il serait également conseillé de nommer vos zones de texte avec des noms plus expressifs. textbox9 ne me dit pas vraiment de quelle zone de texte il s'agit - textboxSurname serait BEAUCOUP mieux !