JDBC知识总结

来源:互联网 发布:科比乔丹数据对比国外 编辑:程序博客网 时间:2024/06/08 18:36

关系
UI—-jdbc—数据库
数据库–jdbc–显示UI界面
制定统一操作关系数据库的标准。

ODBC –采用统一的方式操作不同关系的数据库 用c语言编写
Microsift提出的数据库访问接口标准
JDBC –采用统一的方式操作不同的关系数据库 用java语言编写
由sun公司提供的

JDBC Api分两部分
1、提供给开发者的一组 独立于数据库的API
对数据库的操作都可以用这组API进行,是
一个标准,由sun公司提供。java.sql包中。
那么要把这些通用API翻译成特定数据库能懂得指令
就需要JDBC Driver来实现了
2、提供给面向JDBC驱动程序开发商的编程接口
他会把我们通过JDBC api发给数据库的通用指令翻译给自己的
数据库,由数据库厂商提供驱动,必须实现java.sql.Driver接口
是具体的实现

JDBC的四种类型
a、JDBC-ODBC驱动
把java语言转c语言 效率很低;
b、部分java实现的本地驱动
把java语言转c语言 线路低 必须安装客户端
c、纯java实现的网络驱动
使用数据库的特殊协议
d、纯java实现的本地驱动
采用TCP/IP协议进行通信

Oracle只支持2,4驱动现在采用第四种thin驱动Driver驱动 oracle.jdbc.driver.OracleDriverurl jdbc:oracle:thin:@localhost:1521:XE工作原理流程装载驱动程序---->获得数据库连接--->使用statement执行sql语句返回执行的结果---->关闭相关连接url标识一个唯一的数据库可以安装一个数据库 配置很多个数据库系统url由数据库厂商提供

JDBC编程步骤
statement版
//反射 加载驱动类
Class.forName(driverName);
//建立连接
Connection conn = DriverManager.getConnection(url,user,passwd);
//创建发送sql语句的对象
Statement st = conn.createStatement();
//创建sql语句
String sql = ” ……”;
//执行sql语句
execute(sql):执行任何sql语句,返回boolean 代表是否有结果集
executeQuery(sql)执行sql查询语句 返回结果集
executeUpdate(sql) 执行DMLsql语句 返回受影响行数
适合insert update delete
//接收结果集
ResultSet rs = st.executeQuary(sql);
//遍历结果集
while(rs.next){
String str = rs.getString(“字段名/下标”)
int str = rs.getint(“字段名/下标”)
}

PrepareStatement//创建sql语句String sql = "insert into s_people values (?,?,?,?)";//预处理PrepareStatement pst = conn.prepareStatement(sql);//再传入值pst.execute()/pst.executeQuery();批处理版//设置commit为手动conn.setAutoCommit(false);//设置把命令存入缓存pst.addBatch();//执行缓存中的命令pst.executeBatch();//执行commitconn.commit();//遇到exception回滚conn.rollback();

statement和preparestatement
statement
a、执行异构sql语句效率更高
b、创建对象和执行sql语句
createStatement();
c、动态sql语句使用字符串拼接的方式
d、不会进行预编译
prepareStatement
a、执行同构的sql语句效率更高
b、创建对象和执行sql语句
c、动态sql语句使用?
d、会进行预先编译传入的是字符串

CallableStatement 执行sql/pl语句prepareStatement能识别 a' or 1='1 此类sql漏洞

关闭资源 先开后关 后开先关

面向对象编程和关系型数据库映射的对应关系
表———类
字段——-属性
一行数据—对象
外键——-has a
双向关联 单项关联
private 类名 对象

private set<类名> 对象名

原创粉丝点击