文章目录
- 1. 概念
- 2. 执行顺序
- 3. 代码实现
1. 概念
JDBC(Java Data Base Connectivity)Java数据库连接,由一些类和接口构成的用于执行SQL语句的Java API,可以为多种关系型数据库提供统一访问。
2. 执行顺序
- DriverManager类注册驱动(只做一次)
- Connection接口建立连接
- Statement接口执行创建的SQL语句,PreparedStatement是预编译的Statement,防止SQL注入,由于是预编译的,查询一次之后放到数据库的缓存,下次执行时发现相同,执行效率高
- ResultSet接口保存Statement执行后所产生的查询结果
- 释放资源
3. 代码实现
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.sql.PreparedStatement;
public class Jdbc {
public static void main(String args[]) {
Connection connection = null;
Statement statement = null;
PreparedStatement preparedStatement = null;
ResultSet result = null;
try {
// 注册数据库驱动
Class.forName("com.mysql.jdbc.Driver");
// 连接数据库
String url = "jdbc:mysql://localhost:3306/jdbc";
String username = "root";
String password = "1234";
connection = DriverManager.getConnection(url, username, password);
// 通过connection对象获取statement对象
statement = connection.createStatement();
// preparedStatement是statement的一个子类 执行相同的SQL语句时会预编译,提高效率,且更加安全
String sql = "insert into user(name,password)" + "values(?,?)";
preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1, "张");
preparedStatement.setString(2, "1234");
preparedStatement.executeUpdate();
statement.addBatch("INSERT INTO users(id, name, password) VALUES(1, 'zs', '11')");
statement.addBatch("INSERT INTO users(id, name, password) VALUES(2, 'c', '1')");
statement.addBatch("INSERT INTO users(id, name, password) VALUES(3, 'z', '1')");
statement.addBatch("INSERT INTO users(id, name, password) VALUES(4, 'd', '1')");
statement.addBatch("INSERT INTO users(id, name, password) VALUES(5, 'e', '1')");
statement.addBatch("INSERT INTO users(id, name, password) VALUES(6, 'r', '7')");
statement.addBatch("INSERT INTO users(id, name, password) VALUES(7, 'q', '8')");
statement.addBatch("INSERT INTO users(id, name, password) VALUES(8, 't', '9')");
statement.addBatch("INSERT INTO users(id, name, password) VALUES(9, 'y', '8')");
statement.addBatch("INSERT INTO users(id, name, password) VALUES(10, 'i', '6')");
statement.executeBatch();
String sql1 = "select * from users";
result = statement.executeQuery(sql1);// 通过statement对象执行sql语句
// 返回结果集
System.out.println("id | name |password");
while (result.next()) {
int id = result.getInt("id");
String name = result.getString("name");
String pass = result.getString("password");
System.out.println(id + " | " + name + " | " + pass);
}
} catch (Exception e) {
e.printStackTrace();
}
finally {
if (result != null) {
try {
result.close();
} catch (Exception e) {
e.printStackTrace();
}
result = null;
}
if (connection != null) {
try {
connection.close();
} catch (Exception e) {
e.printStackTrace();
}
result = null;
}
if (statement != null) {
try {
statement.close();
} catch (Exception e) {
e.printStackTrace();
}
result = null;
}
}
}
}