什么是JDBC?

国内mysql时区设置北京 mysql的时区_SQL


JDBC: Java Database Connect Java连接数据库

需要jar包支持:

  • java.sql
  • javax.sql
  • mysql-connector-java

实验环境搭建

CREATE TABLE users(
    id INT PRIMARY KEY,
    `name` VARCHAR(40),
    `password` VARCHAR(40),
    email VARCHAR(60),
    birthday DATE
);

INSERT INTO users(id,`name`,`password`,email,birthday)
VALUES(1,'张三','123456','zs@qq.com','2000-01-01');
INSERT INTO users(id,`name`,`password`,email,birthday)
VALUES(2,'李四','123456','ls@qq.com','2000-01-01');
INSERT INTO users(id,`name`,`password`,email,birthday)
VALUES(3,'王五','123456','ww@qq.com','2000-01-01');


SELECT	* FROM users;

导入数据库依赖:

<!--mysql的驱动-->
<dependencies>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.47</version>
    </dependency>
</dependencies>

国内mysql时区设置北京 mysql的时区_bc_02

idea中连接数据库:

国内mysql时区设置北京 mysql的时区_bc_03


此时有的小伙伴或许会遇到这样的问题

国内mysql时区设置北京 mysql的时区_bc_04


Server returns invalid timezone. Go to ‘Advanced’ tab and set 'serverTimezon

翻译过来就是:服务器返回无效时区。进入“高级”选项卡,手动设置“serverTimezone”属性。

这一看就是时区出了问题,没有配置好时区

mysql解决方案

解决方案有两种,第一,设置mysql的时区。第二,mysql驱动的版本。详细步骤如下:

首先让我们看第一种方案

  1. 首先mysql环境配置要没有问题

国内mysql时区设置北京 mysql的时区_bc_05

2 然后进入命令窗口(Win + R),连接数据库 mysql -hlocalhost -uroot -p,回车,输入密码,回车:

国内mysql时区设置北京 mysql的时区_国内mysql时区设置北京_06

  1. 继续输入 show variables like’%time_zone’; (注意不要漏掉后面的分号),回车

国内mysql时区设置北京 mysql的时区_mysql_07


如果你的箭头显示的是SYSTEM

那就是你没有设置时区问题

成功之后显示的是我上面图显示的**+08:00**4.现在我们来设置时区

输入set global time_zone = ‘+8:00’; 注意不要漏掉后面的分号),回车

国内mysql时区设置北京 mysql的时区_mysql_08


最后结果显示这个就是成功了

接下来我们看第二方案,同步mysql驱动

国内mysql时区设置北京 mysql的时区_SQL_09


国内mysql时区设置北京 mysql的时区_bc_10


显示这个就是成功了,相比之下我认为第二种方案还是简单一下!!!

国内mysql时区设置北京 mysql的时区_国内mysql时区设置北京_11

JDBC 固定步骤:

  1. 加载驱动
  2. 连接数据库,代表数据库
  3. 向数据库发送SQL的对象Statement : CRUD
  4. 编写SQL (根据业务,不同的SQL)
  5. 执行SQL
  6. 关闭连接
public class TestJdbc {
    public static void main(String[] args) throws ClassNotFoundException, SQLException {
        //配置信息
        //useUnicode=true&characterEncoding=utf-8 解决中文乱码
        String url="jdbc:mysql://localhost:3306/jdbc?useUnicode=true&characterEncoding=utf-8";
        String username = "root";
        String password = "123456";

        //1.加载驱动
        Class.forName("com.mysql.jdbc.Driver");
        //2.连接数据库,代表数据库
        Connection connection = DriverManager.getConnection(url, username, password);

        //3.向数据库发送SQL的对象Statement,PreparedStatement : CRUD
        Statement statement = connection.createStatement();

        //4.编写SQL
        String sql = "select * from users";

        //5.执行查询SQL,返回一个 ResultSet  : 结果集
        ResultSet rs = statement.executeQuery(sql);

        //打印信息
        while (rs.next()){
            System.out.println("id="+rs.getObject("id"));
            System.out.println("name="+rs.getObject("name"));
            System.out.println("password="+rs.getObject("password"));
            System.out.println("email="+rs.getObject("email"));
            System.out.println("birthday="+rs.getObject("birthday"));
        }

        //6.关闭连接,释放资源(一定要做) 先开后关
        rs.close();
        statement.close();
        connection.close();
    }
}

预编译SQL

public class TestJdbc2 {
    public static void main(String[] args) throws Exception {
        //配置信息
        //useUnicode=true&characterEncoding=utf-8 解决中文乱码
        String url="jdbc:mysql://localhost:3306/jdbc?useUnicode=true&characterEncoding=utf-8";
        String username = "root";
        String password = "123456";

        //1.加载驱动
        Class.forName("com.mysql.jdbc.Driver");
        //2.连接数据库,代表数据库
        Connection connection = DriverManager.getConnection(url, username, password);

        //3.编写SQL
        String sql = "insert into  users(id, name, password, email, birthday) values (?,?,?,?,?);";

        //4.预编译
        PreparedStatement preparedStatement = connection.prepareStatement(sql);

        preparedStatement.setInt(1,4);//给第一个占位符? 的值赋值为1;
        preparedStatement.setString(2,"赵六");//给第二个占位符? 的值赋值为赵六
        preparedStatement.setString(3,"123456");//给第三个占位符? 的值赋值为123456;
        preparedStatement.setString(4,"zl@qq.com");//给第四个占位符? 的值赋值为1;
        preparedStatement.setDate(5,new Date(new java.util.Date().getTime()));
        //给第五个占位符? 的值赋值为new Date(new java.util.Date().getTime());

        //5.执行SQL
        int i = preparedStatement.executeUpdate();

        if (i>0){
            System.out.println("插入成功");
        }

        //6.关闭连接,释放资源(一定要做) 先开后关
        preparedStatement.close();
        connection.close();
    }
}