JDBC的概念
jdbc: java database connectivity java 与数据库的连接
角色分类
服务器 (db): a)、接收 sql b)、执行 sql c)、返回结果
客户端 (java):a)、接收数据 b)、组装sql c)、发送SQL(与数据库建立联系) d)、分析结果
jdbc 步骤
jdbc的连接
Connection con ==DriverManager.getConnection(“jdbc:oracle:thin:@locahost:1521:orcl”,“scott”,“tiger”)
处理块
静态处理块Statement
Statement 是 Java 执行数据库操作的一个重要接口,用于在已经建立数据库连接的基础上,向数据库发送要执行的 SQL 语句。Statement 对象,用于执行不带参数的简单 SQL 语句。
Statement state=con.createStatement();
特点:处理 不变的静态的 sql 语句
优点: 直接查看sql ,方便处理错误
缺点:性能不高 拼接 sql 麻烦 可能存在 sql 注入
预处理块PreparedStatement
PreparedStatement 接口继承了 Statement由于 PreparedStatement 对象已预编译过,所以其执行速度要快于 Statement 对象。因此,多次执行的 SQL 语句经常创建为 PreparedStatement 对象,以提高效率。
使用PreparedStatement时,他的SQL语句不再采用字符串拼接的方式,而是采用占位符的方式。“?”在这里就起到占位符的作用.
String sql = "update t_course set course_name =? where course_id=?";
特点 :处理 不变的静态的 sql 语句 |可变的 sql 语句 带 ? 的 sql
优点:性能高,方便编写sql 不存在sql注入 安全
缺点:不能直接打印sql语句 不方便处理错误
处理sql语句返回结果集
执行查询语句,并把结果集返回给集合ResultSet
ResultSet rs = s.executeQuery(sql);
释放资源
释放资源的原则是先打开的后关闭,一般的顺序为:结果集->处理块->连接
//JDBC查询语句的执行流程
public static void main(String[] args) throws ClassNotFoundException, SQLException {
//1.加载驱动(选择哪一个数据库)
Class.forName("oracle.jdbc.OracleDriver");
//2.获取连接(与数据库连接上)
Connection conn=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe", "SCOTT", "TIGER");
//3.准备sql
String sql="select empno,ename from emp"; //注意:sql语句后面不要添加分号;
//4.获取处理块 (打包发送)
Statement state=conn.createStatement();
//5.执行完毕得到结果,接收结果集
ResultSet result=state.executeQuery(sql);
//6.处理数据
while(result.next()){
int i=result.getInt(1);
String name=result.getString("ename");
System.out.println(i+"-->"+name);
}
//7.关闭
result.close();
state.close();
conn.close();
}