使用JDBC创建数据库

使用JDBC创建数据库

有了上节课的理解,这节课来使用JDBC创建一张表。其实知道了JDBC的几步操作,关键就是得到一个 Connection 对象后,调用这个对象获取不同的 Statement,然后执行 Statement 里面的方法来执行sql语句。

执行创建数据表的操作还是利用:

Statement smt = conn.createStatement();

然后调用它的 executeUpdate 方法:

smt.executeUpdate(databaseSql);Code language: CSS (css)

关键是sql语句。比如创建数据库的语句。

注意,创建数据库和上一节不一样。上一节的url连接是带有库名的,现在因为要创建数据库,所以就不需要连接到某个库上面了。

完整代码

import java.sql.*;

public class Demo {
    public static void main(String[] args) throws ClassNotFoundException, SQLException {
        Class.forName("com.mysql.cj.jdbc.Driver");//注册JDBC驱动
        String url = "jdbc:mysql://localhost:3306/?useSSL=false&serverTimezone=Hongkong&characterEncoding=utf-8&autoReconnect=true";
        Connection conn = DriverManager.getConnection(url,"root","123321");
        Statement statement = conn.createStatement();
        int res = statement.executeUpdate("create database tablename1");
        //记得要关闭连接
        if(statement != null) {
            statement.close();
        }
        if(conn != null) {
            conn.close();
        }
    }
}Code language: JavaScript (javascript)

执行后打开数据库会发现多了一个库。

补充说明

  • url中去掉了具体的数据库名,只写到端口号后面加 /,表示连接的是mysql服务器本身,而不是某个具体库
  • executeUpdate() 用于执行 DDL(create/drop/alter)和 DML(insert/update/delete)语句,返回值是受影响的行数;对于 create database 这类DDL,返回值通常为0
  • 如果要创建表而不是创建库,需要先连到某个已有库,再执行 create table 语句:
String url = "jdbc:mysql://localhost:3306/jdbcdemo?useSSL=false&serverTimezone=Hongkong&characterEncoding=utf-8&autoReconnect=true";
statement.executeUpdate("create table users (id int primary key auto_increment, name varchar(30))");Code language: JavaScript (javascript)
  • executeUpdate() 也可以用来执行 drop database / drop table 等语句
  • 如果要判断数据库是否已存在再创建,sql可以写成 create database if not exists tablename1,避免重复创建报错
  • 资源关闭建议用 try-with-resources,自动按 ResultSet → Statement → Connection 顺序关闭

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注