JDBC: java database connectivity java 与数据库的连接
角色分类:
服务器(db):
1、接收sql
2、执行sql
3、返回结果
客户端(java):
1、接收数据
2、组装sql
3、发送sql(与数据库建立联系)
4、分析结果
JDBC是面向接口的编程:
1、java制定标准,不同的数据库厂商实现对应的接口即可,常用接口:
2、Oracle厂商实现接口(既导入jar包)
JDBC实现步骤
1、加载驱动
2、建立连接
3、创建处理块:
处理块分为:
静态处理块Statement
处理 不变的静态的 sql 语句
优点: 直接查看sql ,方便处理错误
缺点:性能不高 拼接 sql 麻烦 可能存在 sql 注入
预处理块PreparedStatement
特点 :处理 不变的静态的 sql 语句 |可变的 sql 语句 带 ? 的 sql 优点:性能高,方便编写sql 不存在sql注入
安全缺点:不能直接打印sql语句 不方便处理错误
4、执行sql语句
5、释放资源(关闭开启的资源),释放顺序跟打开顺序相反,顺序一般为: 结果集->处理块->连接
实例:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
/*
* java连接数据库基本流程:
* 前提: 先去Oracle数据库安装路径下,获取到ojdbc6.jar 拿到项目中,新建一个资源文件夹,objc6.java放进去,点击右键build path->add to build path
* 1.加载驱动(选择哪一个数据库)
* 2.获取连接(与数据库连接上)
* 3.准备sql
* 4.获取处理块 (打包发送)
* 5.执行完毕得到结果,接收结果集
* 6.处理数据
* 7.关闭
*/
public class JDBCSimpleDemo01 {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
//1.加载驱动(选择哪一个数据库)利用反射获取数据库驱动
Class.forName("oracle.jdbc.OracleDriver");
//Class.forname("");
//2.获取连接(与数据库连接上)
Connection conn=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "SCOTT", "TIGER");
//3.准备sql ;sql的增删改查的语句
String sql="select * from emp";
//4.获取处理块 (打包发送)
Statement state=conn.createStatement();
//5.执行完毕得到结果,接收结果集
ResultSet result=state.executeQuery(sql);
//6.处理数据
while(result.next()){
int i=result.getInt(1);//数据的字段排位从1开始;1是员工编号
String name = result.getString(2);//2是员工姓名
String job = result.getString(3);//3是工种
System.out.println("员工编号: "+i+" 员工姓名: "+name+" \t工种: "+job);
}
//7.关闭
result.close();
state.close();
conn.close();
}
}