JDBC基础
2019-04-29 08:51:52来源:博客园 阅读 ()
1.JDBC介绍
JDBC(Java Database Connectivity)是基于JAVA语言访问数据库的一种技术。
JDBC包括一套JDBC的API和一套程序员和数据库厂商都必须去遵守的规范。
定义在两个包中:
java.sql包:提供访问数据库基本的功能
javax.sql包:提供扩展的功能
2.JDBC可以做些什么?
连接到数据库
在Java app中执行SQL命令
处理结果。
3.JDBC中常用的接口和类
1.Java.sql.DriverManager 驱动管理器。用来装载驱动程序,并且为创
建新的数据库连接提供支持。
2. Java.sql.Connection完成对某一指定数据库的连接
3. Java.sql.Statement在一个给定的连接中作为SQL执行语句的容器,他包含了两个重要的子类型。
– Java.sql.PreparedSatement用于执行预编译的sql语句
– Java.sql.CallableStatement用于执行数据库中存储过程的调用
4. Java.sql.ResultSet对于给定SQL语句取得结果的途径
4.通过JDBC连接数据库的步骤:
1.加载驱动程序
使用Class.forName()显式加载驱动程序。
例如:
Class.forName(“oracle.jdbc.driver.OracleDriver”);
加载了oracle提供的jar包内的OracleDriver类
2. 建立连接
使用DriverManager.getConnection(url);建立与给定数据库URL的连接。
例如
1 String url="jdbc:oracle:thin:@127.0.0.1:1521:orcl"; 2 String user="SCOTT"; 3 String password = "tiger"; 4 Connection conn = DriverManager.getConnection(url, user, password);
5.处理块Statement
5.1 静态处理块 Statement
特点: 静态的sql语句
创建: Connection对象调用 createStatement() 方法
操作:
executeQuery(String sql) --> select 查询
executeUpdate(String sql) --> DML操作(insert 、delete、update)
execute(String sql) --> DDL操作
5.2 预处理块 PreparedStatement
特点: 动态的sql语句 凡是Statement 能够处理的 PreparedStatement都能处理反之不一定
创建: Connection对象调用 prepareStatement(String sql) 方法
操作:
executeQuery(String sql) --> select 查询
executeUpdate(String sql) --> DML操作(insert 、delete、update)
execute(String sql) --> DDL操作
可以使用"?"作为参数替换SQL语句中的部分值,后面传入参数(可解决SQL注入问题)
可定义参数的位置:
select -->where sal=?
insert --> values(?)
update --> set sal=? where deptno=?
delete --> where sal=?
设置参数值:setXxx(int index, Xxx x)
index:第几个参数
Xxx:参数类型
x:参数值
注:定义的参数必须填充
例:
1 String sql = "select * from t_user where username = ? and password = ?"; 2 PreparedStatement ps = conn.prepareStatement(sql); 3 String u = "zhangsan"; 4 String p = "123456"; 5 ps.setString(1, u); 6 ps.setString(2, p); 7 ResultSet rs = stat.executeQuery(sql);
5.3 总结:
1.Statement对象在每次执行sql语句时都将语句传给数据库,在多次执行同一个语句时,效率比较低。
2.Statement对象Sql注入引起安全问题。
3.可以使用PreparedStatement,使用数据库的预编译功能,速度可以提高很多.避免sql注入引起的安全问题。
4.PreparedStatement对象的sql语句可以接受参数,每次执行时可以传递不同的参数
6.检索结果集
处理块调用executeQuery(sql)方法会返回一个ResultSet类的对象
ResultSet的基本处理方法:
– ResultSet对象包括一个由查询语句返回的一个表,这个表中包含所有的查询结果,按照行和列进行处理.
– ResultSet对象维持一个指向当前行的指针.最初,这个指针指向第一行之前.ResultSet类的next()方法使这个指针移向下一行.第一次,使用next()方法,将指针指向结果集的第一行.next方法的返回值是一个boolean值,若为true,则成功移向下一行.若返回false则没有下一行.
– getXXX方法可以从某一列中获得结果.其中XXX是jdbc中的java数据类型.如getInt();需要制定检索的列,或名称
7.查询数据库步骤:
1.加载数据库驱动类
1)在工程下新建lib文件夹,将 ojdbc6.jar(jar包在:E:\oracle\product\11.2.0\dbhome_1\jdbc\lib)拷贝至该目录下
2)右键ojdbc6.jar文件,build path --> add too build path
3)将驱动类加载到内存中
Class.forName("oracle.jdbc.driver.OracleDriver");
2.获取数据库连接对象
Connection conn = DriverManager.getConnection(url,user,password);
3.写sql语句
String sql = "xxxxxx";
4.创建PreparedStatement对象
PreparedStatement ps = conn.prepareStatement(sql);
5.执行查询返回ResultSet结果集对象
ResultSet rs = ps.executeQuery();
6.遍历结果集,获取查询结果
while(rs.next){
rs.getXxx()
}
7.释放资源
rs.close()
ps.close()
conn.close()
8.批处理
多次执行数据更新操作时,可以使用批处理减少连接数据库次数,提高效率
Statement批处理方式:
Statement st = conn.createStatement();
st.addBatch(更新语句1);
st.addBatch(更新语句2);
…..
st.executeBatch();
st.close();
PreparedStatement批处理方式:
PreparedStatement ps = conn.preparedStatement(sql);
ps.setXXX(索引,参数值);
… …
ps.addbatch();
ps.executeBatch();
ps.close();
原文链接:https://www.cnblogs.com/gaojinshun/p/10770432.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
下一篇:Mybatis配置详解
- 04.Java基础语法 2020-06-11
- SpringBoot 2.3 整合最新版 ShardingJdbc + Druid + MyBatis 2020-06-11
- 1-Java基础回顾整理_01 2020-06-10
- Java基础语法菜鸟教程笔记 2020-06-10
- Java基础复习——类和对象 2020-06-09
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash