2011-09-08 4 views
-1

J'ai essayé plusieurs types de format de date et pourtant, je ne peux pas le faire correctement.Erreur lors du stockage de la valeur de date dans la base de données MySQL

Voici le codage qui avait été écrit

Dim serverDate As String = Format(Now(), "DD-MM-YYYY") 
strNew &= "INSERT INTO Staff (" 
      strNew &= "full_name" 
      strNew &= ", login_id" 
      strNew &= ", passwd" 
      strNew &= ", last_update" 
      strNew &= ") VALUES (" 
      strNew &= "'" & txt_Name.Text & "'" 
      strNew &= ", '" & txt_Login.Text & "'" 
      strNew &= ", '" & txt_Password.Text & "'" 
      strNew &= ", (STR_TO_DATE('" & serverDate & "', '%d-%m-%Y'))" 
      strNew &= ")" 

Toute idée qu'avais-je manqué .. Contribue sont très appréciés ..

Edit # 1: oublié d'ajouter l'erreur un message
"valeur datetime incorrect: 'DD-09-AAAA' pour la fonction str_to_date"

+0

Pourquoi ma question a-t-elle été rejetée? .. TT_____TT Je suis vraiment hors d'idée comment résoudre la question alors seulement je l'affiche ici .. – BlurrieBlue

+0

Bonjour, attaque par injection sql –

Répondre

0

vous utilisez chaîne sql codée en dur de sorte que vous devez utiliser y aaaa-MM-jj date du format.

Dim serverDate As String = DateTime.Now.ToString("yyyy-MM-dd") 

strNew &= "INSERT INTO Staff (" 
      strNew &= "full_name" 
      strNew &= ", login_id" 
      strNew &= ", passwd" 
      strNew &= ", last_update" 
      strNew &= ") VALUES (" 
      strNew &= "'" & txt_Name.Text & "'" 
      strNew &= ", '" & txt_Login.Text & "'" 
      strNew &= ", '" & txt_Password.Text & "'" 
      strNew &= ", '" & serverDate & "'" 
      strNew &= ") 

EDIT:

@BlurrieBlue: oublié d'ajouter dans le message d'erreur "Valeur datetime incorrecte : 'DD-09-AAAA' pour la fonction str_to_date"

Oui c'est un format incorrect. Il devrait être

Format(Now(), "dd-MM-yyyy") 

Jetez un oeil à ce bout de code

cmd=new MySqlCommand() 
cmd.Connection=cn 
cmd.CommandText="INSERT INTO Staff (?full_name,?login_id,?passwd,?last_update)" 
cmd.Parameters.Add("?full_name", MySql.Data.MySqlClient.MySqlDbType.VarChar).Value =txt_Name.Text 
cmd.Parameters.Add("?login_id", MySql.Data.MySqlClient.MySqlDbType.VarChar).Value =txt_Login.Text 
cmd.Parameters.Add("?passwd", MySql.Data.MySqlClient.MySqlDbType.VarChar).Value =txt_Password.Text 
cmd.Parameters.Add("?last_update", MySql.Data.MySqlClient.MySqlDbType.DateTime).Value =DateTime.Now 

cn.Open() 
cmd.ExecuteNonQuery() 
cn.Close() 

Hors-sujet: Ne pas utiliser hard-coded chaîne SQL. Utilisez l'instruction sql paramétrée.

+0

J'ai essayé d'utiliser la procédure stockée pour obtenir le serverTime avant mais il avait le problème stockant dans la base de données trop .. – BlurrieBlue

+0

J'ai essayé la solution donnée mais elle me donne toujours le même message d'erreur .. Dois-je importer n'importe quelle bibliothèque dedans? – BlurrieBlue

+0

@BlurrieBlue: Quels sont les API que vous utilisez (connexion .net?) – adatapost

Questions connexes