Maison >base de données >tutoriel mysql >Comment insérer correctement les champs java.util.Date dans une base de données ?

Comment insérer correctement les champs java.util.Date dans une base de données ?

DDD
DDDoriginal
2025-01-06 10:59:42785parcourir

How to Properly Insert java.util.Date Fields into a Database?

Insertion des champs java.util.Date dans une base de données

Question :

Je rencontre une erreur lorsque j'essaie de insérez un enregistrement avec un champ java.util.Date dans une base de données. L'erreur indique que « La syntaxe de la représentation sous forme de chaîne d'une valeur datetime est incorrecte ». Comment puis-je résoudre ce problème ?

Solution :

Pour insérer un champ java.util.Date dans une base de données, vous devez d'abord envisager d'utiliser un mappage relationnel d'objet ( ORM) telle qu'Hibernate pour faire abstraction des requêtes SQL. Cependant, si cela n'est pas réalisable, vous pouvez suivre les étapes suivantes :

  1. Utiliser un java.sql.PreparedStatement pour exécuter la requête SQL.
  2. Convertir le java.util.Date instance à un objet java.sql.Date ou java.sql.Timestamp.
  3. Utilisez la méthode setDate() de PreparedStatement pour définir la valeur de le champ de date avec l'objet converti.

Exemple :

java.util.Date myDate = new java.util.Date("10/10/2009");
java.sql.Date sqlDate = new java.sql.Date(myDate.getTime());

Connection conn = ...; // Obtain the database connection

String sql = "INSERT INTO USERS (USER_ID, FIRST_NAME, LAST_NAME, SEX, DATE) VALUES (?, ?, ?, ?, ?);";
PreparedStatement stmt = conn.prepareStatement(sql);

stmt.setString(1, userId);
stmt.setString(2, myUser.GetFirstName());
stmt.setString(3, myUser.GetLastName());
stmt.setString(4, myUser.GetSex());
stmt.setDate(5, sqlDate);

stmt.executeUpdate(); // Execute the SQL query

Cette approche échappe automatiquement les chaînes et empêche les vulnérabilités d'injection SQL.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn