JDBC的一些知识的总结
来源:互联网 发布:js正则数字和字母组合 编辑:程序博客网 时间:2024/06/11 02:37
1.Statement的三个方法
a.ResultSet executeQuery(); 能够执行select语句
b.int executeUpdate() ; 能够操作insert/update/delete语句
c.boolean execute(); 执行上述的两种SQL语句。当执行SQL语句有结果集返回时,返回true;当执行dml操作,或者没有结果集返回时,返回false;
2数据库中过程的创建
(1)create or replace procedure insert_stu( v_id number, v_name varchar2, v_age number, v_sex char)is begininsert into student(id,name, age, sex)values(v_id, v_name, v_age, v_sex);commit;end;exec insert_stu(1, 'peter', 20, 'M');最后一条语句是在执行创建的过程。
这个过程的功能是为了向数据库中插入数据,而这种方式是在数据库中的SQLPlus执行的。
(2)create or replace procedure total_count( v_deptno dept_fen.deptno%type, v_count out number)is beginselect count(*) into v_countfrom dept_fen where deptno = v_deptno;end;测试数据库中过程的方式declarev_count number;begintotal_count(20, v_count);dbms_output.putline(v_count);end;这些代码也是在创建过程。这里给出了数据定义了另一种方式:
v_deptno dept_fen.deptno%type //这行代码表示v_deptno的类型与dept_fen这个表中的deptno属性的类型一样
下面这行代码定义了一个输出数据,过程中定义的变量默认都是读入,输出型变量如下定义
v_count out number //out是一个关键字 指明变量是读入变量还是输出变量测试这样的过程,需要定义一个v_count变量,然后作为参数传入到过程中,从过程中带回值。这样就能查看过程的输出内容。
3.在数据库中为了提高数据库执行SQL语句的效率可以一次性往缓存中加入多条SQL语句,然后一次性处理这样效率比较高。因为在数据库内部没有I/O开销。如果是一条条执行,这样每次都要读入,都要将结果集从数据库中取出来。I/0消耗大量的时间,效率底下。所以下面的代码能够实现批量执行sql语句。
conn.setAutoCommit(false);stmt = conn.createStatement();stmt.addBatch(sql1);stmt.addBatch(sql2);int [] result = stmt.executeBatch();//批量执行conn.commit();
第一行代码是把自动提交设置为false。这样就能够阻止自动提交。批量执行只要用Statement类型的对象stmt调用addBatch()方法,就能把SQL放入到数据库的缓存取中。用stmt调用executeBatch()方法,实现数据库语句的批量执行。因为这些语句在执行期间,没有I/O中断,所以执行的效率比较高。最后手动提交。
4.使用序列,实现主键自增长。
create sequence myseq start with 1000increment by 10;insert into mystu(id, name,age, sex)values(myseq.nextval,'chris', 20, 'M');
创建学列,使用序列的nextval实现主键自动增长。每次向数据库中插入数据后,nextval的值,都会按照创建序列的步长增长。没指定情况下,每次增加1.
5.实现结果集的滚动。
Connection conn = DriverManager.getConnection(url,username,password);Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResutlSET.CONCUR_READ_ONLY);ResultSet rs = stmt.executeQuery(sql);rs.frist();rs.previous();rs.last();rs.beforeFirst();rs.next();rs.absolute(n);rs.relative(n);
主要是穿件语句对象时候,Connection 类型的对象调用的createStatement()方法参数,确定了得到的语句对象在调用executeQuery(sql)方法时候,获得的结果集是否可以滚动。createStatement()方法中的两个参数确定了执行的SQL语句可以滚动,并且是只读的,不能够更改。ResultSet rs对象调用下面的方法,可以实现结果集滚动。
在调用first(),previous()上述这些方法的时候,可能会抛出异常,最可能的异常就是:结果集已经耗尽。但是用这种方式实现的结果集不能回滚。
6.分页技术的使用,实现结果集的回滚。已经用回滚的方式写过程序,这里不赘述了。SQL语句主要是用了行内视图。
7.大对象类型。从数据库中读取大对象。往数据库中写大对象。都使用的二进制流。blob二进制的大对象,主要处理的是音频,视频,图像,二进制文件等。Clob字符型大对象,通常是文本文件。
8.对于java与数据库的连接,前几篇文章已经写过了。不赘述。
- JDBC的一些知识的总结
- JDBC的一些知识
- 一些知识的总结
- JDBC 当中一些类加载的知识
- java的一些知识总结
- 一些知识进行的总结
- 前端知识的一些总结
- servlet的一些相关知识的总结
- Oracle常用知识的一些总结
- SQLSERVER 的一些常用知识总结
- 关于BGP知识自己的一些总结
- SQLSERVER 的一些常用知识总结
- protel总结的一些小知识
- 总结了一些关于JQuery的知识
- 磁盘io的一些知识和总结
- ACM用到的一些知识总结
- 个人总结的一些链表知识
- 总结S3C2440的一些知识和概念
- report builder3.0的基本文档
- VSFTP - 下载,安装,配置,卸载
- PHP常用函数大全【不段更新】
- 黑马日记——交通灯管理系统
- Android将应用程序指定默认语言 .
- JDBC的一些知识的总结
- 由一个日期, 怎样知道是星期几?
- web server和application server到底有什么区别?
- 运用Autoconf和Automake生成Makefile的学习之路
- “SecurityError: Error #2060: 安全沙箱冲突:ExternalInterface 调用者xxx不能访问xxx
- 获取Android应用程序出错信息并将信息发送到指定邮件 .
- linux目录结构
- Dirichlet distribution的两种理解方式
- 代码背后的点滴