目录
JDBC
Java Database Connectivity (JDBC)
与数据库驱动的关系
接口与实现的关系
规范
四个核心对象:
DriverManager: 注册驱动
Connection: 表示与数据库创建的连接
Statement: 操作数据库语句的对象
ResultSet: 结果集或一张虚拟表
步骤
1、注册驱动
// 1、注册驱动
// DriverManager.registerDriver(new com.mysql.jdbc.Driver()); // 不推荐,因为会二次创建Driver对象
Class.forName("com.mysql.jdbc.Driver"); // 经常使用 反射机制加载驱动
2、创建连接
// 2、创建连接
// #1:协议:子协议://ip:port/数据库名 用户名 密码
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/stu_info", "root", "root"); // 经常使用
// #2:使用Property来传递参数
Properties info = new Properies();
info.setProperty("user", "root");
info.setProperty("password", "root");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/stu_info", info);
// #3:只使用一个参数
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/stu_info?user=root&password=root");
3、得到执行sql语句的statement语句
// 3、得到执行sql语句的statement语句
Statement stmt = conn.createStatement();
4、执行sql语句,并返回结果
// 4、执行sql语句,并返回结果
// 语句包括executeQuery(), 指向查询操作,返回ResultSet
// int executeUpdate(),可能执行insert、update、delete语句,或者不反悔任何内容的SQL语句,返回受影响行数
// boolean execute(),可执行任何语句,返回boolean值,表示是否返回ResultSet。仅当执行select且有返回结果时返回true,其他返回false
ResultSet rs = stmt.executeQuery("select * from stu"); // 查询
int i = stmt.executeUpdate("insert into stu(id, name, gender) values(1, \"zs\", \"m\")"); // insert
// int i = stmt.executeUpdate("UPDATE stu SET sname=\"er\",birth=CURRENT_DATE() WHERE id=8");// set
// int i = stmt.executeUpdate("DELETE FROM stu WHERE id=6"); // delete
if (i > 0) {
System.out.println("success" + " 修改了" + i + "行");
}
5、处理结果
// 5、处理结果
// rs最开始指向表头,其有next()函数,指向下一行
while (rs.next()) {
System.out.print(rs.getObject(1) + " "); // 根据索引号取值
System.out.peintln("id"); // 根据标签取值
System.out.peintln("name");
System.out.peintln("gender");
System.out.println(rs.getObject(2) + " ");
System.out.println("-----------------------");
}
6、关闭资源
// 6、关闭资源
rs.close();
stmt.close();
conn.close();