Java数据库操作
2015-10-05 15:55
465 查看
ps:结果集的游标可以在第一行之前,最后一行之后。
DatabaseMetaData对象,将表的字段信息以行列的形式存储在一个ResultSet对象中
获取到表的字段数和字段名后可以方便地操作查询结果。
可滚动的结果集:
获得Statement对象
Statement statement = con.createStatement(int type, int concurrency);
type取值决定滚动方式:
concurrency取值决定是否可以使用结果集更新数据库:
常用方法:
beforeFirst()
afterLast() first()
last() isAfterLast()
isBeforeFirst() isFirst()
isLast() getRow()
absolute(int row)
预处理语句对象:PreparedStatement
连接对象con可以调用prepareStatement(String sql)方法对参数sql进行预编译处理并将生成的数据库底层的内部命令封装在PreparedStatement对象中。
PrepareStatement对象可调用一下方法执行命令:
ResultSet executeQuery();
bolean execute(); int executeUpdate();
使用通配符:在对SQL惊喜预处理时,可以使用通配符?来代替字段的值,只要在执行之前设置具体值即可。
Eg.
PreparedStatement sql = con.prepareStatement("SELECT * FROM goods WHERE price < ?");
sql.setFloat(1,1000);
通配符按着他们在预处理SQL语句中从左到右出现的顺序分别被称作第1个、第2个...通配符,setXxx()第一个参数指定哪一个通配符,第二个参数指定通配符具体值。
步骤1:关闭自动提交模式(建立连接对象后的提交模式是自动提交模式)
con.setAutoCommit(false);
步骤2:处理事务
con.commit()
步骤3: 处理事务失败(撤销事务所有操作 放到catch中)
con.rollback()
Statement.addBatch(sql);
Statement.addBatch(sql);
Statement.addBatch(sql);
....................
int [] num = Statement.executeBatch();//返回被执行的SQL语句的序号
CachedRowSetImpl继承了ResultSet的所有方法,操作方法一样。
将ResultSet对象rs中的数据保存到CachedRowSetImpl对象rowSet中:
CachedRowSetImplement rowSet = new CachedRowSetImplement();//缓冲结果集
rowSet.populate(rs);
con.close();
查询操作:statement对象调用executeQuery(sql)方法
顺序查询:DatabaseMetaData对象,将表的字段信息以行列的形式存储在一个ResultSet对象中
<span style="white-space:pre"> DatabaseMetaData</span> metaData = con.getMetaData(); ResultSet tableMessage = metaData.getColumns(null, null, tableName, null);表有多少个字段tableMessage就有多少行,每行四列:数据库名、数据库扩展名、表名、字段名
获取到表的字段数和字段名后可以方便地操作查询结果。
<span style="white-space:pre"> </span>columns = 0; <span style="white-space:pre"> </span>while(tableMessage.next()){ <span style="white-space:pre"> </span>colName[columns] = tableMessage.getString(columns+1); <span style="white-space:pre"> </span>columns++; <span style="white-space:pre"> </span>}
可滚动的结果集:
获得Statement对象
Statement statement = con.createStatement(int type, int concurrency);
type取值决定滚动方式:
concurrency取值决定是否可以使用结果集更新数据库:
常用方法:
beforeFirst()
afterLast() first()
last() isAfterLast()
isBeforeFirst() isFirst()
isLast() getRow()
absolute(int row)
更新操作:statement对象调用executeUpdate(sql)方法
使用预处理语句:程序事先将SQL语句解释为数据库底层的内部命令然后直接让数据库去执行这个命令,减轻数据库负担,提高访问数据库的速速。预处理语句对象:PreparedStatement
连接对象con可以调用prepareStatement(String sql)方法对参数sql进行预编译处理并将生成的数据库底层的内部命令封装在PreparedStatement对象中。
PrepareStatement对象可调用一下方法执行命令:
ResultSet executeQuery();
bolean execute(); int executeUpdate();
使用通配符:在对SQL惊喜预处理时,可以使用通配符?来代替字段的值,只要在执行之前设置具体值即可。
Eg.
PreparedStatement sql = con.prepareStatement("SELECT * FROM goods WHERE price < ?");
sql.setFloat(1,1000);
通配符按着他们在预处理SQL语句中从左到右出现的顺序分别被称作第1个、第2个...通配符,setXxx()第一个参数指定哪一个通配符,第二个参数指定通配符具体值。
事务:
步骤1:关闭自动提交模式(建立连接对象后的提交模式是自动提交模式)con.setAutoCommit(false);
步骤2:处理事务
con.commit()
步骤3: 处理事务失败(撤销事务所有操作 放到catch中)
con.rollback()
批处理:
Statement对象调用executeBatch()方法可以一次执行多条SQL语句,一般要放到事务中 防止出错Statement.addBatch(sql);
Statement.addBatch(sql);
Statement.addBatch(sql);
....................
int [] num = Statement.executeBatch();//返回被执行的SQL语句的序号
CachedRowSetImpl类:
为避免长时间占用数据库连接资源,取得ResultSet对象后就将其中数据存到CachedRowSetImpl对象中,然后就可以在读取结果集前关掉数据库连接啦!CachedRowSetImpl继承了ResultSet的所有方法,操作方法一样。
将ResultSet对象rs中的数据保存到CachedRowSetImpl对象rowSet中:
CachedRowSetImplement rowSet = new CachedRowSetImplement();//缓冲结果集
rowSet.populate(rs);
con.close();
相关文章推荐
- 冒泡排序算法(Java)
- Java:对象的强、软、弱和虚引用
- java泛型,原始类型和桥方法
- 用两个栈实现一个队列 JAVA实现
- Java并发编程(一)线程定义、状态和属性
- Java并发编程(一)线程定义、状态和属性
- Java+Windows+ffmpeg实现视频剪切
- java反射机制及简单工厂模式
- Spring整合Shiro做权限控制模块详细案例分析
- (转)java反射机制及简单工厂模式
- java 二维数组 杨辉三角
- Java编程:定义功能去除ArrayList中的重复元素
- java 二维数组 99乘法表
- Java基础知识强化之集合框架笔记33:Arrays工具类中asList()方法的使用
- Java基础知识强化之集合框架笔记32:集合之可变参数的概述和使用
- myeclipse 删除不再使用的工作空间记录
- 线程缓存的探索
- JAVA反射机制理解
- (转)JAVA反射机制理解
- Java八个并发学习——线程同步工具CyclicBarrier