JDBC的理解
在java里面,JDBC就是一个接口,给不同的数据库一个规范作为一个桥梁来连接java和数据库,而MySql或者Oracle等等这些数据库就是jdbc的不同实现类,数据库里的jar包一般称为驱动;所以现在就很明朗了,java提供一个jdbc的接口来规范,而各种数据库提供自己的驱动来实现与java的连接,这就是JDBC的作用
JDBC连接数据库的步骤
前面当然是要先把对应的jar包下载下来,之后再项目里面创建一个lib文件夹,把jar包放进去,再把jar包build Path一下,出现小奶瓶,再开始下面的步骤
第一步:安装驱动
第二步:创建连接
第三步:创建SQL语句
第四步:执行语句
第五步:获得执行结果
第六步:关闭查询,再关闭连接
具体的增删改查
public class Demo1 {
public static String DB_DRIVER = "com.mysql.jdbc.Driver";
public static String URL = "jdbc:mysql://localhost:3306/dodoke";
public static String USER_NAME = "root";
public static String PASSWORD = "123456";
public static void main(String[] args) throws Exception{
// insert();
// update();
// delete();
select();
}
public static void insert() throws Exception{
// 装载驱动
Class.forName(DB_DRIVER); // 通过类全名加载驱动
// 建立连接
Connection conn = DriverManager.getConnection(URL, USER_NAME, PASSWORD);
for (int i = 0; i < 100; i++) {
// 创建查询
PreparedStatement pst = conn.prepareStatement("INSERT INTO student(name) VALUES('Jack" + i + "')");
// 执行查询
int rs = pst.executeUpdate();
// 返回结果
System.out.println(rs);
// 关闭通道:从里到外的关闭,先关闭查询,再关闭连接
pst.close();
}
conn.close();
}
public static void update() throws Exception{
// 装载驱动
Class.forName("com.mysql.jdbc.Driver"); // 通过类全名加载驱动
// 建立连接
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/dodoke", "root", "123456");
// 创建查询
PreparedStatement pst = conn.prepareStatement("UPDATE student SET name=? WHERE ID<?");
pst.setString(1, "Mary");
pst.setInt(2, 4); // 设置sql语句中有?的值 ?代表的是参数
// 执行查询
int rs = pst.executeUpdate();
// 返回结果
System.out.println(rs);
// 关闭通道:从里到外的关闭,先关闭查询,再关闭连接
pst.close();
conn.close();
}
public static void delete() throws Exception {
// 装载驱动
Class.forName("com.mysql.jdbc.Driver"); // 通过类全名加载驱动
// 建立连接
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/dodoke", "root", "123456");
// 创建查询
PreparedStatement pst = conn.prepareStatement("DELETE FROM student WHERE ID<?");
pst.setInt(1, 4); // 设置sql语句中有?的值 ?代表的是参数
// 执行查询
int rs = pst.executeUpdate();
// 返回结果
System.out.println(rs);
// 关闭通道:从里到外的关闭,先关闭查询,再关闭连接
pst.close();
conn.close();
}
public static void select() throws Exception {
// 装载驱动
Class.forName("com.mysql.jdbc.Driver"); // 通过类全名加载驱动
// 建立连接
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/dodoke", "root", "123456");
// 创建查询
PreparedStatement pst = conn.prepareStatement("SELECT id as idd,name as nm FROM student");
// 执行查询
ResultSet rs = pst.executeQuery();
// 返回结果
// 遍历rs里面的内容
while (rs.next()) {
int id = rs.getInt("idd");
String name = rs.getString("nm");
System.out.println(id + ":" + name);
}
rs.close();
// 关闭通道:从里到外的关闭,先关闭查询,再关闭连接
pst.close();
conn.close();
}
}
把查询的数据放到list集合里面
先写一个学生类
package com.dodoke.jdbc;
public class Student {
private Integer id;
private String name;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Student(Integer id, String name) {
super();
this.id = id;
this.name = name;
}
public Student() {
super();
}
@Override
public String toString() {
return "Student [id=" + id + ", name=" + name + "]";
}
再把查询数据放入学生类型的集合
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class Demo2 {
public static void main(String[] args) {
List<Student> stus = query("SELECT id as idd,name as nm FROM student");
for (Student stu : stus) {
System.out.println(stu);
}
}
public static List<Student> query(String sql) {
List<Student> stus = new ArrayList<Student>();
try {
// 装载驱动
Class.forName("com.mysql.jdbc.Driver"); // 通过类全名加载驱动
// 建立连接
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/dodoke", "root", "123456");
// 创建查询
PreparedStatement pst = conn.prepareStatement(sql);
// 执行查询
ResultSet rs = pst.executeQuery();
// 返回结果
// 遍历rs里面的内容
while (rs.next()) {
int id = rs.getInt("idd");
String name = rs.getString("nm");
stus.add(new Student(id, name));
}
rs.close();
// 关闭通道:从里到外的关闭,先关闭查询,再关闭连接
pst.close();
conn.close();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
return stus;
}
}