<代码见文底>
jdbc的介绍就不写了,随便一搜就有。
一、导入包
大多数情况下使用import java.sql.*就行。
二、连接数据库
首先注册JDBC驱动程序:
Class.forName("com.mysql.jdbc.Driver");
然后连接数据库:
Connection conn = null;
conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/", //数据库的url,这里连的是数据库根地址
"root", //用户名
"123");//密码
以上是针对MySQL8.0以上版本而言,如果你和我一样用的是较新的版本,应该:
将"com.mysql.jdbc.Driver"改 为"com.mysql.cj.jdbc.Driver"。
三、执行SQL语句
以创建新的数据库,名为 z_jdbc_test 为例:
stmt = conn.createStatement();
String sql = "CREATE DATABASE z_jdbc_test";
stmt.executeUpdate(sql);
System.out.println("Database created successfully.");
删库、建表、删表与此大体相同,不赘述。
如果是执行查询语句,以Employees这个表为例:
sql = "SELECT id, first, last, age FROM Employees";
ResultSet rs = stmt.executeQuery(sql);
四、清理环境资源
rs.close();
stmt.close();
conn.close();
可能遇到的报错
①运行ClassforName()时异常。首先检查下里面的驱动程序名,再检查下有项目没有导入mysql驱动的jar包。
如果没导入jar包,要去网上下载,并按https://jingyan.baidu.com/article/ca41422fc76c4a1eae99ed9f.html导入到项目中。
(假设你用的是eclipse)
②The Server time zone value 'XXXXX' (乱码)这样的报错。
可以参考这篇博客:https://blog.csdn.net/Wei_NiZi/article/details/81509822,
简单地说,在url后面加上?serverTimezone=UTC就可以了。使用较低版本的MySQL则没有这个问题。
一点补充
url里的”localhost“在其他教程里可能是”127.0.0.1“,这两者是等价的。它是回送地址,指本地机,用来测试使用,在Windows 中的别名即Localhost。而3306这个端口号是MySQL的默认端口,若使用其他DBMS就得改了。
代码
import java.sql.*;//导入包
public class CreateDatabase {
static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver";
static final String DB_URL = "jdbc:mysql://localhost:3306/?serverTimezone=UTC";
static final String USER = "root";
static final String PASSWORD = "123";
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
try {
//注册JDBC驱动程序
Class.forName(JDBC_DRIVER);
//连接数据库
System.out.println("Connecting to database...");
conn = DriverManager.getConnection(DB_URL, USER, PASSWORD);
//执行一个SQL语句
System.out.println("Creating statement...");
stmt = conn.createStatement();
String sql = "CREATE DATABASE z_jdbc_test";
stmt.executeUpdate(sql);
System.out.println("Database created successfully.");
} catch (SQLException se) {
se.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if(stmt != null) {
stmt.close();
}
if(conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}