我用jdbc向mysql插入一条语句用当前时间,可是查询的时候显示的时间不是当前,早了几个小时,怎么回事啊

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我用jdbc向mysql插入一条语句用当前时间,可是查询的时候显示的时间不是当前,早了几个小时,怎么回事啊相关的知识,希望对你有一定的参考价值。

我用的new java.util.Date(),插入的
同台机器,windows 7

不知道你的服务器和客户端是不是同一台,如果不是的话,可能就是你向数据库插入当前时间的时候,插入的是服务器的当前时间。
如果是同一台的话,你Date()后,直接打开数据库看看,如果存入的时间和你电脑的时间不一样的话,那你就把本地时间改掉然后再Date()试试,如果还是这样的话,应该是程序问题,不过我不知道怎么解决,如果时间一样的话,那就是电脑的问题,跟你以后用这个程序影响不大。
你这个问题还真少见啊。解决了的话,也顺便给我留个言啊。谢谢啦。祝你好运。
参考技术A 因为你的计算机的时间比北京时间早了几个小时。。。

调一下计算机的本地时间吧。。。

呵呵。。。。

祝你成功哈。。
参考技术B 没碰到过,用java.sql.Date();试试。
不行的话可以用数据库自带的函数,将你的时间字段默认为当前时间。
参考技术C 如果程序是在服务器上运行,那时间就是服务器的时间

使用JDBC向数据库中插入一条数据(第一次修改版)

增加了一个Tools类,放了一些常用的工具

package com.JDBC.java;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

/**
 * JDBC 的工具类
 */
public class JDBCTools {

    /**
     * 关闭Statement,Connection
     * 
     * @param statement
     * @param connection
     */
    public static void release(Statement statement, Connection connection) {
        if (statement != null) {
            try {
                statement.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (connection != null) {
            try {
                connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    /**
     * 获取数据库连接的方法
     * 
     * @return
     * @throws Exception
     */
    public static Connection getConnection() {
        // 准备连接数据库的四个字符串
        // 驱动的全类名
        String driverClass = null;
        String jdbcUrl = null;
        String user = null;
        String password = null;
        String jdbcName = null;
        // 读取jdbcName.properties文件
        InputStream inStream = JDBCTools.class.getClassLoader().getResourceAsStream("properties/jdbcName.properties");
        Properties propertiesOfName = new Properties();
        try {
            propertiesOfName.load(inStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
        jdbcName = propertiesOfName.getProperty("jdbcName");
        // 读取需要的properties 文件
        InputStream in = JDBCTools.class.getClassLoader().getResourceAsStream("properties/" + jdbcName + ".properties");
        Properties properties = new Properties();
        try {
            properties.load(in);
        } catch (IOException e) {
            e.printStackTrace();
        }
        driverClass = properties.getProperty("driver");
        jdbcUrl = properties.getProperty("jdbcUrl");
        user = properties.getProperty("user");
        password = properties.getProperty("password");
        // 加载数据库驱动程序(注册驱动)
        try {
            Class.forName(driverClass);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        Connection connection = null;
        try {
            connection = DriverManager.getConnection(jdbcUrl, user, password);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return connection;
    }
}

然后写了一个比较通用的update方法

/**
     * 通用的更新方法:包括INSERT/UPDATE/DELETE
     * @param sql
     */
    public void update(String sql){
        Connection connection = null;
        Statement statement = null;
        try {
            connection = JDBCTools.getConnection();
            statement = connection.createStatement();
            statement.executeUpdate(sql);
        }catch (Exception e) {
            e.printStackTrace();
        }finally{
            JDBCTools.release(statement, connection);
        }
    }

懒得写测试类,肯定好使,相信我~

以上是关于我用jdbc向mysql插入一条语句用当前时间,可是查询的时候显示的时间不是当前,早了几个小时,怎么回事啊的主要内容,如果未能解决你的问题,请参考以下文章

用Navicat for MySQL向l数据库插入一条用户信息,密码加密怎么加。

MYSQL 之 JDBC: 增删改查通过Statement执行更新操作

mysql insert语句注意啥

Mysql一次性插入多少条记录最优

用 INSERT 语句 向数据库 插入 可以为空的 INT型数据

JDBC学习笔记——Statement和ResultSet