JavaWeb——JDBC_总结
来源:互联网 发布:巨人数据库 编辑:程序博客网 时间:2024/06/10 23:29
1.JDBC概述:
Java database connection:java数据库连接;
为什么要用Java连接数据库?
我们所需要的程序是自动化执行的,不是通过键盘在控制台下输入命令来控制DB的
JDBC是接口,而JDBC驱动才是接口的实现,没有驱动无法完成数据库连接!每个数据库厂商都有自己的驱动,用来连接自己公司的数据库
2.JDBC步骤:
l 导入jar包
l 注册驱动
l 获得连接
l 获得发送命令对象
l 发送命令,获得返回资源
l 处理返回的资源
l 关闭资源
2.1 DriverManager类讲解
Jdbc程序中的DriverManager用于加载驱动,并创建与数据库的链接,这个API的常用方法
Class.forName("com.mysql.jdbc.Driver");
DriverManager.getConnection(url, user, password),
2.2 数据库URL讲解
URL用于标识数据库的位置,通过URL地址告诉JDBC程序连接哪个数据库
常用数据库URL地址的写法:
Oracle写法: jdbc:oracle:thin:@localhost:1521:sid
SqlServer写法: jdbc:microsoft:sqlserver://localhost:1433; DatabaseName=sid
MySql写法: jdbc:mysql://localhost:3306/sid
如果连接的是本地的Mysql数据库,并且连接使用的端口是3306,
那么的url地址可以简写为: jdbc:mysql:///数据库
2.3 Connection类讲解
Jdbc程序中的Connection,它用于代表数据库的链接,Collection是数据库编程中最重要的一个对象,客户端与数据库所有交互都是通过connection对象完成的,这个对象的常
用方法:
createStatement():创建向数据库发送sql的statement对象。
prepareStatement(sql) :创建向数据库发送预编译sql的PrepareSatement对象。
prepareCall(sql):创建执行存储过程的callableStatement对象。
setAutoCommit(boolean autoCommit):设置事务是否自动提交。
commit() :在链接上提交事务。
rollback() :在此链接上回滚事务。
2.4 Statement类讲解
Jdbc程序中的Statement对象用于向数据库发送SQL语句,Statement对象常用方法:executeQuery(String sql) :用于向数据发送查询语句。
executeUpdate(String sql):用于向数据库发送insert、update或delete语句
execute(String sql):用于向数据库发送任意sql语句
addBatch(String sql) :把多条sql语句放到一个批处理中。
executeBatch():向数据库发送一批sql语句执行。
2.5 ResultSet类讲解
Jdbc程序中的ResultSet用于代表Sql语句的执行结果。Resultset封装执行结果时,采用的类似于表格的方式.ResultSet 对象维护了一个指向表格数据行的游标,初始的时候,游
标在第一行之前,调用ResultSet.next() 方法,可以使游标指向具体的数据行,进行调用方
法获取该行的数据。
ResultSet既然用于封装执行结果的,所以该对象提供的都是用于获取数据的get方法:
获取任意类型的数据
getObject(int index)
getObject(string columnName)
获取指定类型的数据,例如:
getString(int index)
getString(String columnName)
ResultSet还提供了对结果集进行滚动的方法:
next():移动到下一行
Previous():移动到前一行
absolute(int row):移动到指定行
beforeFirst():移动resultSet的最前面。
afterLast() :移动到resultSet的最后面。
释放资源
Jdbc程序运行完后,切记要释放程序在运行过程中,创建的那些与数据库进行交互
的对象,这些对象通常是ResultSet, Statement和Connection对象,特别是Connection
对象,它是非常稀有的资源,用完后必须马上释放,如果Connection不 能及时、正确的关
闭,极易导致系统宕机。Connection的使用原则是尽量晚创建,尽量早的释放。
为确保资源释放代码能运行,资源释放代码也一定要放在finally语句中。
3.使用JDBC对数据库进行CRUD
3.1 statement对象介绍
Jdbc中的statement对象用于向数据库发送SQL语句,想完成对数据库的增删改查,只需
要通过这个对象向数据库发送增删改查语句即可.
executeUpdate方法,用于向数据库发送增、删、改的sql语句,
executeUpdate执行完后,将会返回一个整数(即增删改语句导致了
数据库几行数据发生了变化)。
executeQuery方法用于向数据库发送查询语句,
executeQuery方法返回代表查询结果的ResultSet对象.
* createStatement st = conn.createStatement();String sql = "insert into user(….) values(…..) "; int num = st.executeUpdate(sql);if(num>0){ System.out.println("插入成功!!!");} * updateStatement st = conn.createStatement();String sql = “update user set name=‘’ where name=‘’"; int num = st.executeUpdate(sql);if(num>0){ System.out.println(“修改成功!!!");} * deleteStatement st = conn.createStatement();String sql = “delete from user where id=1; int num = st.executeUpdate(sql);if(num>0){ System.out.println(“删除成功!!!");} * readStatement st = conn.createStatement();String sql = “select * from user where id=1; ResultSet rs = st.executeUpdate(sql);while(rs.next()){ //根据获取列的数据类型,分别调用rs的相应方法映射到java对象中}
3.2 PreparedStatement对象介绍
PreperedStatement是Statement的子类
相对于Statement:
PreperedStatement获取方式不一样
性能高
可以防止SQL注入
获得方式:它的实例对象可以通过调用Connection.preparedStatement()方法获得,
相对于Statement对象而言:PreperedStatement可以避免SQL注入的问题。
Statement会使数据库频繁编译SQL,可能造成数据库缓冲区溢出。PreparedStatement可对SQL进行预编译,
从而提高数据库的 执行效率。并且PreperedStatement对于sql中的参数,允许使用占位符的形式进行替换,
简化sql语句的编写。
String sql = “select * from tab_student where s_number=?”;PreparedStatement pstmt = con.prepareStatement(sql);pstmt.setString(1, “S_1001”);ResultSet rs = pstmt.executeQuery();rs.close();
SQL注入
SELECT * FROM users WHERE NAME= 'ss' AND PASSWORD = '' OR '1' = '1'; SELECT * FROM users WHERE NAME= 'ss' AND PASSWORD = '';DROP TABLE users;
4.MySQL数据库中操作事务命令
开启事务(start transaction)
使用"start transaction"开启MySQL数据库的事务
提交事务(commit)
回滚事务(rollback)
5.JDBC中使用事物
当Jdbc程序向数据库获得一个Connection对象时,默认情况下这个Connection对象会自动向数据库提交在它上面发送的SQL语句.若想关闭这种默认提交方式,让多条SQL在一个事务中执行,可使用下列的JDBC控制事务语句Connection.setAutoCommit(false);//开启事务(start transaction)Connection.rollback();//回滚事务(rollback)Connection.commit();//提交事务(commit)
6.使用JDBC进行批处理
在实际的项目开发中,有时候需要向数据库发送一批SQL语句执行,这时应避免向数据库一条条的发送执行,而应采用
JDBC的批处理机制,以提升执行效率.
JDBC实现批处理有两种方式:statement和preparedstatement
6.1 使用Statement完成批处理
1.使用Statement对象添加要批量执行SQL语句,如下: Statement.addBatch(sql1); Statement.addBatch(sql2); Statement.addBatch(sql3);2、执行批处理SQL语句:Statement.executeBatch();3、清除批处理命令:Statement.clearBatch(); 采用Statement.addBatch(sql)方式实现批处理的优缺点 优点:可以向数据库发送多条不同的SQL语句。 缺点:SQL语句没有预编译。insert into account values(1,’DD’,100);
6.2 使用PreparedStatement完成批处理
使用PreparedStatement完成批处理范例
long starttime = System.currentTimeMillis();
0 0
- JavaWeb——JDBC_总结
- JAVA面试题JDBC_总结
- JavaWeb——HTML_总结
- JavaWeb——CSS_总结
- JavaWeb——JavaScript_总结
- JavaWeb——MySQL_总结
- JavaWeb——HttpSession总结
- JavaWeb学习总结——Session总结
- JavaWeb学习总结(一)——JavaWeb开发入门
- JavaWeb学习总结(一)——JavaWeb开发入门
- JavaWeb学习总结(一)——JavaWeb开发入门
- JavaWeb学习总结(一)——JavaWeb开发入门
- JavaWeb学习总结(一)——JavaWeb开发入门
- JavaWeb学习总结(一)——JavaWeb开发入门
- JavaWeb学习总结(一)——JavaWeb开发入门
- JavaWeb学习总结(一)——JavaWeb开发入门
- JavaWeb学习总结(一)——JavaWeb开发入门
- JavaWeb学习总结(一)——JavaWeb开发入门
- JavaWeb——MySQL_总结
- Navicat 2003-can't connect to MYSQL server on 'localhost'(10061)
- 最优化问题中,牛顿法为什么比梯度下降法求解需要的迭代次数更少?
- org.w3c.dom(java dom)解析XML文档
- centos71安装retext5.0.2
- JavaWeb——JDBC_总结
- HDU1015Safecracker——水题
- Fiddler简介
- eclipse 加载tomcat7的问题,对于低版本也适用。
- Android 一个简单的计算器APP
- Android 自定义Dialog 实现类似ios7 UIAlertView
- Android中图形与图像处理初见面——绘图
- viewpager实现欢迎界面
- JavaWeb——HTTP协议头部分析