JavaEE JDBC ResultSet内外移动】的更多相关文章

ResultSet内外移动 @author ixenos 内外移动指位置光标的移动 内移动就是一个ResultSet得到后的那个光标! 外移动就是多个ResultSet的迭代 内移动 一般的数据库都不允许单个查询提交多个SELECT语句, 1.execute执行SQL语句后,返回一个结果集ResultSet, 2.其中有个光标next在第一个元组之前(想象一下),调用hasNext就会判断光标下一个元组存不存在 3.rs.next定位行(元组triple),rs.getXXX定位列(字段fiel…
在不整合框架的情况下,使用jdbc从数据库读取数据时都得一个个的get和set,不仅累代码还显得不简洁,所以利用java的反射机制写了一个工具类,这样用jdbc从数据库拿数据的时候就不用那么麻烦了. 因为很多情况下数据不止一条,所以返回的是对象类的一个集合. 需要注意的地方:在这里,数据库字段命名格式为:user_name 下划线格式,而java类型的命名格式为驼峰命名格式. 具体代码如下: package com.xc.sap.util; import java.sql.Connection;…
最近在处理DB2 ,查询中,发现如下问题.如果一个查询 count(*),有几十万行,分页如何实现 select row_number() over (order by fid desc ) as row_number,  other_field from   loaddata 如果这个查询的结果会返回几十万行,如何分页: 1  order by fid desc   中 fid 这个字段一定要建立索引,且建立索引时, 要根据sql中的排序方式保持一致            2 如何分页    …
可滚动和可更新的结果集ResultSet @author ixenos 需求背景 1.对于一个只需要分析数据的程序来说,普通的ResultSet已够用 2.但如果ResultSet用于显示一张表或查询结果的可视化数据显示, 1)会希望用户在结果集上前后移动的需求, 2)而且一旦展示了结果集的内容,用户会希望修改这些内容,这有两种方式: (1)一般通过UPDATE语句修改(更高效) (2)通过SELECT得到ResultSet,再遍历修改(意味着可以细化修改操作!) 3.需求总结:细化修改操作,且…
private List<Map<String, Object>> list = new ArrayList<Map<String,Object>>(); public String queryAll() { Connection conn = null; Statement sta = null; ResultSet rs = null; try { Class.forName("com.mysql.jdbc.Driver"); con…
1.载入数据库驱动(jar文件) //须要下载一个数据库的jar包,并导入对应的JDBC项目中,创建路径! Class.forName("com.mysql.jdbc.Driver"); 2.获得数据库连接 DriverManager.getConnection("jdbc:mysql://Database_IP:3306/DATABASE","DATAROOT","PASSWORD"); //返回Connection----…
private List<Map<String, Object>> list = new ArrayList<Map<String,Object>>(); public String queryAll() { Connection conn = null; Statement sta = null; ResultSet rs = null; try { Class.forName("com.mysql.jdbc.Driver"); con…
前天一去公司,老大说,服务器全挂了! 最后排查了半天,结论是内存溢出! 在WAS的DUMP日志中,看得我头晕眼花,终于找到了罪魁祸首,原来是有同事写代码的时候使用了可滚动的结果集导致内存溢出. 什么是可滚动的结果集?其实就是ResultSet游标,本来,Oracle是不支持游标往上移的,只能往下移,也就是一般使用的rs.next(),但是JDBC接口和驱动程序中提供了往上移动的游标,这明显意味着,这种游标是使用JAVA实现的,我没看过源码,但我猜测,应该是在游标移往下一条的时候,将得到的记录保存…
JDBC:Java Data Base Connectivity java数据库连接 1.组成JDBC的两个包:主要是接口 java.sql javax.sql 2.相应JDBC的数据库实现 在tomcat的目录下面添加mysql-connector-java-5.0.8-bin.jar这个数据库驱动包 package com.tsh.web; import java.io.IOException; import java.sql.Connection; import java.sql.Driv…
JDBC1.0 .JDBC2.0 .JDBC3.0 中分别用以下方法创建Statement . JDBC1.0 : createStatement() JDBC2.0 : createStatement(resultSetType, resultSetConcurrency) JDBC3.0 : createStatement(resultSetType, resultSetConcurrency, resultSetHoldability) 下面依次分析resultSetType .resul…
了解JNDI @author ixenos Web与企业应用中的连接管理 1. 数据库连接方式: (1)使用配置文件 (2)使用JNDI 2. 在Web或企业环境中部署 JDBC应用时,数据库连接管理与JNDI(Java Name Directory Interface)是集成在一起的 (1)遍布企业的数据源的属性可以存储在一个目录中,这样我们可以集中管理用户名.密码.数据库名 和 JDBC URL (2)使用JNDI创建数据库连接: Context jndiContext = new Init…
RowSet行集 @author ixenos 应用背景 1.基于结果集的缺点:在与用户的整个交互过程中,必须始终与数据库保持连接 后果:当用户长时间离开时,数据库连接长时间被占用,而这属于稀缺资源: 解决:使用行集RowSet,RowSet继承了ResultSet接口,却无需始终保持与数据库的连接~ 2.结果集不便于移动,因为数据结构复杂,且依赖于连接 解决:使用行集RowSet,RowSet适用于将查询结果移动到复杂应用的其他层,或者其他设备当中 3.因为RowSet继承了ResultSet…
JDBC补充注意点 @author ixenos 1.一个Statement对象可以用于多个不相关的命令和查询,但是一个Statement对象最多只能有一个打开的结果集,如果需要同时执行多个查询同时分析查询结果,那么必须创建多个Statement对象 a)     然而!如果真的需要并发查询分析结果,我们更应该从数据库层面的组合查询去解决,而不是java层面的算法,因为前者只需要分析一个结果 2.使用完ResultSet.Statement.Connection对象后,应立即调用close方法,…
JDBC 读写LOB大对象 @author ixenos LOB 除了数字.字符串和日期之外,许多数据库还可以存储大对象,例如图片或其他数据, 在SQL中,二进制(字节型)大对象称为BLOB,字符型大对象称为CLOB 读取LOB流程 i.     执行SELECT语句 ii.    ResultSet调用getBlob或getClob方法获取Blob或Clob类型的对象 iii.   Blob调用getBytes或getInputStream方法获取Image等对象 iv.   代码如下: Pr…
PreparedStatement @author ixenos PreparedStatement工作原理 注意:虽然mysql不支持PreparedStatement优化,但依然有预编译的实现! PreparedStatement相较Statement的优点 1.预编译缓存的支持,能提高执行效率 2.防范SQL注入 statement有sql注入的风险 比如 SELECT * FROM boss WHERE user='root' OR 1=1 --' AND password='f3f.3…
JDBC接口核心的API @author ixenos java.sql.*   和  javax.sql.* |- Driver接口: 表示java驱动程序接口.所有的具体的数据库厂商要来实现此接口. |- connect(url, properties):  连接数据库的方法. url: 连接数据库的URL URL语法: jdbc协议:数据库子协议://主机:端口/数据库 user: 数据库的用户名 password: 数据库用户密码 |- DriverManager类: 驱动管理器类,用于…
ResultSet结果集对象,封装结果.它是怎么做到封装结果的呢? 游标,类似指针索引最初指在“列名”上,要取到数据就需要让游标向下移动移动后就指向了第一行数据,然后通过一些方法把第一行的每一列都取出来.一次只能获取一行中的一列数据 这个过程就涉及到了两类方法,移动和获取移动: next():游标向下移动一行,判断当前行是否为最后一行(判断是否有数据).如果是返回false,不是则返回ture 获取: getXXX(参数):获取数据 XXX代表数据类型,例如表格中的name 用getString…
原文链接:https://yq.aliyun.com/wenzhang/show_111763 问题描述 //代码... ResultSet rs = this.conn.prepareStatement("select * from test1").executeQuery(); //注sql语句不同 while(rs.next()){ ...} rs = this.conn.prepareStatement("select * from test2").exec…
ResultSet不仅可以内存中的一张二维表一样保存statement执行SQL的结果集,还能通过结果集修改DB的数据.ResultSetMetaData则可以用来获得ResultSet对象的相关信息. ResultSet支持滚动和并发,但需要在创建statement时候,额外传入参数 可滚动结果集 ResultSet用来定位行的方法有,next(),  last(), absolute(), previous(), afterLast()等等. 支持absolute(), previous()…
了解数据库连接池 @author ixenos 数据库连接是有限的资源,如果用户需要离开应用一段时间,那么他占用的连接就不应该保持开放状态: 另一方面,每次查询都获取连接并在随后关闭它的代价也很高. 解决上述问题的方法就是使用数据库连接池(类似线程池的概念). 这意味着数据库连接在物理上并未被关闭,而是保留在一个队列中被反复重用. 连接池是种服务,JDBC规范为实现者提供了用以实现连接池服务的手段, 但JDK本身没有实现,数据库供应商的JDBC驱动程序一般也没有, 相反,Web容器和应用服务器的…
JDBC 事务 @author ixenos 事务 1.概念:我们将一组语句构建成一个事务(trans action),当所有语句顺利执行之后,事务可以被提交(commit):否则,如果其中某个语句遇到错误,那么事务将被回滚,就好像没有任何语句被执行一样 2.需求背景:将多个语句组合成事务的主要原因是为了确保数据库完整性(database integrity) 3.默认情况下,数据库连接处于自动提交模式(autocommit mode),每个SQL语句一旦被执行便被提交给数据库,一旦命令被提交就…
JDBC怎么加载驱动 @author ixenos 分析 1.JDBC是一套连接数据库的接口(放在java.util.sql.Driver类中),不同的数据库依此接口各自实现Java连接到数据库的操作,这些具体的实现就叫做驱动: 2.当只连接一个数据库时,我们可以new 驱动对象来使用,但是当多数据库连接时,要多次创建Driver示例,多次创连接Connection,有些繁琐,这时,sun提供了一个驱动的管理器DriverManager,注册驱动就可以调用: 3.但是每次还是要创Driver实例…
先看错误信息: java.sql.SQLException: Before start of result set at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:910) at com.mysql.jdbc.ResultSet.checkRowPos(ResultSet.java:720) at com.mysql.jdbc.ResultSet.getStringInternal(ResultSet.java:5624)…
简介 JDBC是Java规定的访问数据库的API,目前主流的数据库都支持JDBC.使用JDBC访问不同的数据库时需要安装不同的驱动. JDBC定义了数据库的链接,SQL语句的执行以及查询结果集的遍历等等.JDBC把这些操作定义为接口,位于包java.sql下面,如果java.sql.Connection.java.sql.Statement.java.sql.ResultSet等. 各个数据库提供商在自己的JDBC驱动中实现了这些接口. JDBC连接数据库的一般步骤 1.注册驱动 2.获取连接…
JDBC:   创建SQL语句对象    Statement statement = (Statement) con.createStatement() ;   调用执行     statement.executeUpdate(sqlString);   释放资源            statement.close(); 一 :  创建表的操作代码: package JDBC; import java.sql.Connection; import java.sql.DriverManager;…
JDBC详解:https://www.cnblogs.com/erbing/p/5805727.html JDBC存储过程,事务管理,数据库连接池,jdbc的封装框架:https://www.cnblogs.com/Qian123/p/5349884.html#_labelTop   jdbc日志输出完整SQL语句 1.在maven引入:<dependency>                                      <groupId>log4j</grou…
by qx.zhong Hangzhou 29 Jun 2014 开发环境 OS:  Win8.1 x64 JDK: 1.8 SE DB:  MySQL 5.5  Lib:  mysql-connector-java.jar 1. MySQL数据库数据类型与JDK之间的特殊相应关系 下表仅仅列举几个特殊的值类型对比,其余的有须要能够參考MySQL官网的值类型说明(http://dev.mysql.com/doc/refman/5.1/zh/index.html)以及JDK的相关资料.      …
最靠谱的jdbc连接例子 包括增删改,查一条数据,查所有数据. Bean.java public class Bean { private String id; private String number; private String name; private String score; public String getNumber() { return number; } public void setNumber(String number) { this.number = numbe…
1.什么是JDBC驱动程序? JDBC驱动程序是使Java应用程序与数据库进行交互的软件组件.JDBC驱动程序有4种类型: JDBC-ODBC桥驱动程序 本机API驱动程序(部分为Java驱动程序) 网络协议驱动程序(完全Java驱动程序) 驱动程序(完全Java驱动程序) 2.用Java连接数据库的步骤是什么? 注册驱动程序类 建立连接 建立声明 执行查询 关闭连接 3. JDBC API组件是什么? java.sql软件包包含JDBC API的接口和类. 接口: 连接 声明 准备声明 结果集…
Spring源码深度解析之数据库连接JDBC JDBC(Java Data Base Connectivity,Java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成.JDBC为数据库开发人员提供了一个标准的API,据此可以构建更高级的工具和接口,是数据库开发人员能够用纯Java API编写数据库应用程序,并且可跨平台运行,并且不受数据库供应商的限制. JDBC连接数据库流程及原理如下: (1)在开发环境中加载指…