使用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 顺序关闭
Previous: C#中操作MongoDB