JDBC 的作用 :
Java DataBase Connectivity Java 关系型数据库连接
是官方(sun 公司)定义的一套 Java 操作所有关系型数据库的规则,即接口。各个数据库厂商去实现这套接口,提供数据库驱动 jar 包。我们可以使用这套接口(JDBC)编程,但运行时真正执行的代码是驱动 jar 包中的实现类。
开发步骤
JDBC 中的核心接口有:DriverManager、Connection、Statement、ResultSet
1、导入数据库厂商的驱动 jar 包。
2、注册驱动。(DriverManager)
3、获得连接。(Connection)
4、获得执行者对象。(Statement)
5、执行 SQL 操作,获取结果集。(ResultSet)
6、处理结果集。
7、释放资源。
示例:
sql脚本
create table if not exists user( uid int(11) {
primary key auto_increment,
username varchar(20) not null,
password varchar(32) not null );
}
实体类 User
public class User {
private int uid;
private String username;
private String password;
public User(){}
public int getUid() {
return uid;
}
public void setUid(int uid) {
this.uid = uid;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "User{" +
"uid=" + uid +
", username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
}
添加数据
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
public class JdbcDemo1 {
public static void main(String[] args) throws Exception { //注册驱动
Class.forName("com.mysql.jdbc.Driver");
//获得连接
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/shop", "root",
"root");
//获得执行者对象
String sql = " insert into user(username,password) "
+ " values(?,?)";
PreparedStatement pst = conn.prepareStatement(sql);
//执行 sql 操作 pst.setString(1, "张三");
pst.setString(2, "123456");
pst.execute();
//关闭连接,释放资源
conn.close();
}
}
查询数据
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
public class JdbcDemo2 {
public static void main(String[] args) throws Exception {
//1 导入驱动 jar 包 //2 注册驱动
Class.forName("com.mysql.jdbc.Driver");
//3 获得连接对象
String url = "jdbc:mysql://localhost:3306/shop";
Connection conn = DriverManager.getConnection(url, "root", "root");
//4 获得执行者对象,为防止 SQL 注入,使用预处理对象 String sql = "select * from user" ; //创建 SQL 操作语句
PreparedStatement pst = conn.prepareStatement(sql);
//5 执行 SQL 操作,获得结果集
pst.execute();
ResultSet rs = pst.getResultSet();
//6 处理结果集,封装到 ArrayList 集合中
List<User> userList = new ArrayList<>();
while(rs.next()){ //读取每一行数据
int uid = rs.getInt("uid");
String username = rs.getString("username");
String password = rs.getString("password");
//封装到对象中
User user = new User();
user.setUid(uid);
user.setUsername(username);
user.setPassword(password);
//添加到集合中
userList.add(user);
}
System.out.println(userList);
//7 关闭连接,释放资源
conn.close();
}
}