Enregistrement de la Date&Temps de VB.Net à la Base de données mysql Date?
Je suis insertion de client de l'information en Clients table MySql à partir de la base de données VB.Net 2010. Le problème, c'est quand il insérer les valeurs de Date, la base de la colonne de la Date indique: "0000-00-00".
Ce que j'ai à faire pour insérer le compatible format de la date dans la Base de données MysQl?
C'est le code que j'ai essayé de le faire:
Dim dtb, dtr As DateTime
DateTimePicker1.Format = DateTimePickerFormat.Custom
DateTimePicker1.CustomFormat = "yyyy-mm-dd"
dtb = DateTimePicker1.MinDate
txtdtb.AppendText(dtb)
DateTimePicker2.Format = DateTimePickerFormat.Custom
DateTimePicker2.CustomFormat = "yyyy-mm-dd"
dtr = DateTimePicker1.MinDate
ExecSQL("INSERT INTO clients VALUES('" & clid.Text & "','" & clname.Text & "','" & clgen.Text & "','" & dtb & "','" & claddress.Text & "','" & clemail.Text & "','" & clphone.Text & "','" & clocp.Text & "','" & dtr & "')")
MsgBox("Record Saved", MsgBoxStyle.Information, "Save")
FillList(frmMember.lvMember, GetData("SELECT * FROM clients"))
End If
- Veuillez utiliser une requête paramétrée.... bien sûr, après la réécriture que ExecSQL
Vous devez vous connecter pour publier un commentaire.
Vous insérez
DateTimePicker1.MinDate
au lieu de la valeur réelle que l'utilisateur a choisi.Aussi, utilisez des majuscules mois sinon ce sont les minutes
mm
:Enfin, utiliser sql-paramètres au lieu de concaténation de chaîne pour éviter d'injection de code sql et de la localisation ou les problèmes de conversion.
Voici un exemple:
clid
est en fait uneint
dans la base de données. Toujours utiliser le bon type. Donc j'ai utiliséInt32.Parse
. Vous pouvez utiliserInt32.TryParse
pour valider la saisie.En bref vous avez besoin
DateTimePicker1.value.tostring("yyyy-M-d")
.La
CustomFormat
propriété deDateTimePicker
ne change la manière dont le composant est affiché sur le formulaire, la date réelle de la valeur de laDateTimePicker
est stocké dans sonValue
propriété:Pour modifier le format de la date vous pouvez simplement utiliser le
ToString(format as string)
méthode:Dans MySQL le "date" type de données stocke uniquement la date et accepte de date dans le format "2017-03-20" c'est pourquoi nous utilisons le format "aaaa-M-d" dans le
ToString
fonction.J'ai eu des problèmes comme ca et je l'ai résolu en précisant ToString("s") à tous mes DateTime variables
Par écrit de cette façon, la date est au format correct (2006-08-22T06:30:07) lors de l'insertion dans MySQL.
Probablement le problème de la date de zéro est dû au fait que vous lisez le mauvais propriété de la DateTimePicker (MinDate au lieu de la Valeur), mais vous avez un gros problème ici.
Si vous utilisez la concaténation de chaîne pour former vos commandes Sql, vous avez écrit un très faible code. D'abord vous êtes ouvert à des Injections Sql, le deuxième vous ne pouvez pas être sûr pour formater correctement votre les valeurs d'entrée de l'aime de la base de données du moteur et de la troisième erreur d'analyse pourrait survenir si votre utilisateur tape une apostrophe dans une chaîne de caractères.
De résoudre tous ces problèmes nécessitent une réécriture de votre ExecSQL de recevoir une collection de paramètres
Par Exemple
Comme vous pouvez le voir, le texte de la commande est maintenant plus lisible et il n'y a plus concaténations de chaîne intégré avec des guillemets simples.