目录
1、JDBC是什么?
2、JDBC的本质是什么?
3、JDBC开发前的准备工作,先从官网下载对应的驱动jar包,然后将其配置到环境变量classpath当中。
4、JDBC编程六步(需要背会)
完整代码(第一种SQL查询语句)
完整代码(第二种SQL删除语句)
1、JDBC是什么?
Java Database Connectivity(Java语言连接数据库)
2、JDBC的本质是什么?
JDBC是SUN公司制定的一套接口(interface)
java.sql.*; (这个软件包下有很多接口。)
接口都有调用者和实现者。
面向接口调用、面向接口写实现类,这都属于面向接口编程。
为什么要面向接口编程?
解耦合:降低程序的耦合度,提高程序的扩展力。
多态机制就是非常典型的:面向抽象编程。(不要面向具体编程)
建议:
Animal a = new Cat();
Animal a = new Dog();
// 喂养的方法
public void feed(Animal a){ // 面向父类型编程。
}
不建议:
Dog d = new Dog();
Cat c = new Cat();
思考:为什么SUN制定一套JDBC接口呢?
因为每一个数据库的底层实现原理都不一样。
Oracle数据库有自己的原理。
MySQL数据库也有自己的原理。
MS SqlServer数据库也有自己的原理。
....
每一个数据库产品都有自己独特的实现原理。
JDBC的本质到底是什么?
一套接口。
3、JDBC开发前的准备工作,先从官网下载对应的驱动jar包,然后将其配置到环境变量classpath当中。
classpath=.;D:course 6-JDBCresourcesMySql Connector Java 5.1.23mysql-connector-java-5.1.23-bin.jar
以上的配置是针对于文本编辑器的方式开发,使用IDEA工具的时候,不需要配置以上的环境变量。
IDEA有自己的配置方式。
4、JDBC编程六步(需要背会)
完整代码(第一种SQL查询语句)
//JDBC代码
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
//1、注册驱动
Class.forName("com.mysql.jdbc.Driver");
//2、获取连接
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/bjpowernode","root","0417");
//3、获取数据库操作对象
stmt = conn.createStatement();
//4、执行sql
String sql = "select * from t_user where loginName = '"
+userLoginInfo.get("loginName")+ "'and loginPwd ='"
+userLoginInfo.get("loginPwd")+"'";
rs= stmt.executeQuery(sql);
//5、处理结果集
if (rs.next()){
loginSuccess =true;
}
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}finally {
//6、释放资源
if(rs != null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}if (stmt != null){
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}if (conn != null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
//JDBC代码
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
//1、注册驱动
Class.forName("com.mysql.jdbc.Driver");
//2、获取连接
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/bjpowernode","root","0417");
//3、获取数据库操作对象
stmt = conn.createStatement();
//4、执行sql
String sql = "select * from t_user where loginName = '"
+userLoginInfo.get("loginName")+ "'and loginPwd ='"
+userLoginInfo.get("loginPwd")+"'";
rs= stmt.executeQuery(sql);
//5、处理结果集
if (rs.next()){
loginSuccess =true;
}
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}finally {
//6、释放资源
if(rs != null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}if (stmt != null){
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}if (conn != null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
第一步:注册驱动(作用:告诉Java程序,即将要连接的是哪个品牌的数据库)
//1、注册驱动
Class.forName("com.mysql.jdbc.Driver");
第二步:获取连接(表示JVM的进程和数据库进程之间的通道打开了,这属于进程之间的通信,重量级的,使用完之后一定要关闭通道。)
//2、获取连接
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/bjpowernode","root","0417");
第三步:获取数据库操作对象(专门执行sql语句的对象)
//3、获取数据库操作对象
stmt = conn.createStatement();
第四步:执行SQL语句(DQL DML....) 语句不同处理查询结果方式就不同(看第二种方式)。
//4、执行sql
String sql = "select * from t_user where loginName = '"
+userLoginInfo.get("loginName")+ "'and loginPwd ='"
+userLoginInfo.get("loginPwd")+"'";
rs= stmt.executeQuery(sql);
第五步:处理查询结果集(只有当第四步执行的是select语句的时候,才有这第五步处理查询结果集。)
//5、处理结果集
if (rs.next()){
loginSuccess =true;
}
第六步:释放资源(使用完资源之后一定要关闭资源。Java和数据库属于进程间的通信,开启之后一定要关闭。)
//6、释放资源
if(rs != null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}if (stmt != null){
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}if (conn != null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
完整代码(第二种SQL删除语句)
//JDBC代码
Connection conn = null;
PreparedStatement ps =null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/bjpowernode","root","0417");
String sql = "delete from dept where deptno = ?";
ps = conn.prepareStatement(sql);
ps.setInt(1,50);
int count = ps.executeUpdate();
System.out.println(count);
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}finally {
if (ps != null){
try {
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}if (conn != null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
第一步:注册驱动(作用:告诉Java程序,即将要连接的是哪个品牌的数据库)
//1、注册驱动
Class.forName("com.mysql.jdbc.Driver");
第二步:获取连接(表示JVM的进程和数据库进程之间的通道打开了,这属于进程之间的通信,重量级的,使用完之后一定要关闭通道。)
//2、获取连接
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/bjpowernode","root","0417");
第三步:获取预编译数据库操作对象(专门执行sql语句的对象)
//3、获取预编译数据库操作对象
String sql = "delete from dept where deptno = ?";
ps = conn.prepareStatement(sql);
ps.setInt(1,50);
第四步:执行SQL语句(DQL DML....) 语句不同处理查询结果方式就不同(看第二种方式)。
//4、执行sql
int count = ps.executeUpdate();
System.out.println(count);
第五步:释放资源(使用完资源之后一定要关闭资源。Java和数据库属于进程间的通信,开启之后一定要关闭。)
if (ps != null){
try {
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}if (conn != null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}



