2017-08-13 9 views
-1

J'ai une table avec un type de colonne TIME (nommé myTime). chaîne t = "15:50:00"; Comment convertir et insérer cette chaîne dans la colonne myTime (HH: MM: SS).Comment insérer l'heure (HH: MM: SS) dans la table de base de données MySQL en Java?

Merci beaucoup!

+0

Vous pouvez même utiliser « varchar » comme dans le tableau de type de données MySQL et le stocker directement sous forme de chaîne. Plus tard, vous pouvez récupérer en tant que chaîne et convertir en votre objet Date si nécessaire via le code Java –

+2

s'il vous plaît! J'ai besoin de TIME type pas DATETIME –

+0

Bienvenue dans Stack Overflow. Veuillez rechercher votre question avant de l'afficher. Dans de nombreux cas, vous trouverez votre réponse plus rapidement grâce à votre moteur de recherche. Si vous ne le faites pas, lorsque vous nous dites ce que vous avez trouvé et ce que vous n'avez pas trouvé, ce que vous avez essayé et ce qui vous manque encore, nous pouvons vous guider beaucoup plus précisément. –

Répondre

0

Vous pouvez utiliser String type de données pour représenter la valeur Time, ou vous pouvez utiliser MySQLTime type de données et dans votre code Java utiliser preparedStatement.setTime(), par exemple:

votre table est:

CREATE my_table (
    id   INT   PRIMARY KEY AUTO_INCREMENT, 
    name  VARCHAR2(30) NOT NULL, 
    time_from TIME 
); 

Votre code Java peut ressembler à ceci:

import java.sql.Connection; 
import java.sql.PreparedStatement; 
import java.sql.Time; 
import java.text.DateFormat; 
import java.text.SimpleDateFormat; 
import java.util.Date; 

public class MySQLDatabaseDemo { 

    Connection conn = null; 
    PreparedStatement preparedStatement = null; 

    public static Connection getConnection() throws Exception { 
     String driver = "org.gjt.mm.mysql.Driver"; 
     String url = "jdbc:mysql://localhost/databaseName"; 
     String username = "root"; 
     String password = "root"; 
     Class.forName(driver); 
     Connection conn = DriverManager.getConnection(url, username, 
                password); 
     return conn; 
    } 

    /** 
    * @param args [0] = value of "id" 
    *    [1] = value of "name" 
    *    [2] = value of "time_from" 
    */ 
    public void insertRowWithTimeDatatype(String[] args) { 

     String query = "insert into my_table (id, name, timefrom) " + 
            "values (?, ?, ?)";  

     DateFormat sdf = new SimpleDateFormat("hh:mm:ss"); 
     Date date = sdf.parse(args[2]); 
     Time time = new Time(date.getTime()); 

     try { 
     conn = getConnection(); // getConnection() is YOUR method 

     preparedStatement = conn.prepareStatement(query); 

     preparedStatement.setInt(1, Integer.parseInt(args[0])); 
     preparedStatement.setString(2, args[1]); 
     preparedStatement.setTime(3, time); 

     // Execute statement and return the number of rows affected 
     int rowCount = preparedStatement.executeUpdate(); 
     System.out.println("Number of rows affected: " + rowCount); 
     } finally { 
     preparedStatement.close(); 
     conn.close(); 
     } 
    } 
} 
+0

S'il vous plaît, n'apprenez pas aux jeunes à utiliser les classes obsolètes et notoirement obsolètes 'Date',' Time' et 'SimpleDateFormat'. Au moins pas comme la première option et sans aucune réserve. Aujourd'hui, nous avons tellement mieux. –

1

Vous peut utiliser TIME type de données. Par exemple,

CREATE TABLE tests (
    id INT PRIMARY KEY AUTO_INCREMENT, 
    name VARCHAR(500) NOT NULL, 
    start_time TIME, 
    end_time TIME 
); 
+0

J'ai eu une table avec un type de colonne (nommé myTime) TIME. mais je ne peux pas insérer une chaîne t = chaîne t = "15:50:00" dans cette colonne. Comment convertir et insérer cette chaîne dans la colonne myTime. pls! –

+0

Veuillez utiliser 'setString()' pour le type de données SQL. –

0

Vous pouvez utiliser setString() pour définir tout type de données SQL. Essayez quelque chose comme ceci:

prepStatement.setString("myTime", "15:50:00"); 
0

Je n'ai pas moi-même l'expérience, mais le mieux que vous pouvez faire est de garder votre temps dans un objet LocalTime en Java et utiliser yourPreparedStatement.setObject(parameterIndex, yourTime); pour régler l'heure en tant que valeur dans votre Instruction SQL insert ou update. Je suis sûr que vous pouvez trouver des exemples de code, des tutoriels, de la documentation, etc., là-bas. S'il vous plaît aller chercher.

Alors, d'où obtenez-vous l'objet LocalTime?

LocalTime yourTime = LocalTime.parse(t); 

(où t est votre chaîne de temps, par exemple 15:50:00 comme dans la question)