JavaEE JDBC RowSet行集】的更多相关文章

RowSet行集 @author ixenos 应用背景 1.基于结果集的缺点:在与用户的整个交互过程中,必须始终与数据库保持连接 后果:当用户长时间离开时,数据库连接长时间被占用,而这属于稀缺资源: 解决:使用行集RowSet,RowSet继承了ResultSet接口,却无需始终保持与数据库的连接~ 2.结果集不便于移动,因为数据结构复杂,且依赖于连接 解决:使用行集RowSet,RowSet适用于将查询结果移动到复杂应用的其他层,或者其他设备当中 3.因为RowSet继承了ResultSet…
一.事务 事务是指一个工作单元,它包括了一组加入,删除,改动等数据操作命令,这组命令作为一个总体向系统提交运行,要么都运行成功,要么所有恢复 在JDBC中使用事务 1)con.setAutoCommit(false),取消自己主动提交 2)对数据库运行一个或多个操作(一个或多个SQL语句) 3)con.commit().提交事务(上面的第二部的多个操作就作为一个总体提交运行) 4)假设某个操作失败.通过con.rollback()回滚全部操作(撤销以上的操作,将数据恢复为运行前状态) 事务处理依…
可滚动和可更新的结果集ResultSet @author ixenos 需求背景 1.对于一个只需要分析数据的程序来说,普通的ResultSet已够用 2.但如果ResultSet用于显示一张表或查询结果的可视化数据显示, 1)会希望用户在结果集上前后移动的需求, 2)而且一旦展示了结果集的内容,用户会希望修改这些内容,这有两种方式: (1)一般通过UPDATE语句修改(更高效) (2)通过SELECT得到ResultSet,再遍历修改(意味着可以细化修改操作!) 3.需求总结:细化修改操作,且…
參考博客com.microsoft.sqlserver.jdbc.SQLServerException: 结果集没有当前行 java获取结果集,if(rs!=null).和while(rs.next())差别  com.microsoft.sqlserver.jdbc.SQLServerException: 结果集没有当前行. st = conn.createStatement(); ResultSet rs = st.executeQuery(sql); if(rs!=null) {//rs.…
RowSet概念 在C#中,提供了一个DataSet,可以把数据库的数据放在内存中进行离线操作(读写),操作完成之后再同步到数据库中去,Java中则提供了类似的功能RowSet. RowSet接口继承自ResultSet接口.与ResultSet相比,RowSet默认是可滚动.可更新.可序列化的结果集,可以作为JavaBean来方便地在网络上传输,用于同步两端数据.对于离线RowSet而言, 程序从创建RowSet时就已经把数据load进内存,因此可以更好地利用内存性能,降低数据库服务器的负载,…
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…
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…
JDBC补充注意点 @author ixenos 1.一个Statement对象可以用于多个不相关的命令和查询,但是一个Statement对象最多只能有一个打开的结果集,如果需要同时执行多个查询同时分析查询结果,那么必须创建多个Statement对象 a)     然而!如果真的需要并发查询分析结果,我们更应该从数据库层面的组合查询去解决,而不是java层面的算法,因为前者只需要分析一个结果 2.使用完ResultSet.Statement.Connection对象后,应立即调用close方法,…
JDBC接口核心的API @author ixenos java.sql.*   和  javax.sql.* |- Driver接口: 表示java驱动程序接口.所有的具体的数据库厂商要来实现此接口. |- connect(url, properties):  连接数据库的方法. url: 连接数据库的URL URL语法: jdbc协议:数据库子协议://主机:端口/数据库 user: 数据库的用户名 password: 数据库用户密码 |- DriverManager类: 驱动管理器类,用于…
以下内容引用自http://wiki.jikexueyuan.com/project/jdbc/result-sets.html: SQL语句从数据库查询中获取数据,并将数据返回到结果集中.SELECT语句是一种标准的方法,它从一个数据库中选择行记录,并显示在一个结果集中.java.sql.ResultSet接口表示一个数据库查询的结果集. 一个ResultSet对象控制一个光标指向当前行的结果集.术语“结果集”是指包含在ResultSet对象中的行和列的数据. ResultSet接口的方法可细…
ResultSet结果集对象,封装结果.它是怎么做到封装结果的呢? 游标,类似指针索引最初指在“列名”上,要取到数据就需要让游标向下移动移动后就指向了第一行数据,然后通过一些方法把第一行的每一列都取出来.一次只能获取一行中的一列数据 这个过程就涉及到了两类方法,移动和获取移动: next():游标向下移动一行,判断当前行是否为最后一行(判断是否有数据).如果是返回false,不是则返回ture 获取: getXXX(参数):获取数据 XXX代表数据类型,例如表格中的name 用getString…
1.载入数据库驱动(jar文件) //须要下载一个数据库的jar包,并导入对应的JDBC项目中,创建路径! Class.forName("com.mysql.jdbc.Driver"); 2.获得数据库连接 DriverManager.getConnection("jdbc:mysql://Database_IP:3306/DATABASE","DATAROOT","PASSWORD"); //返回Connection----…
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…
了解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…
JDBC 事务 @author ixenos 事务 1.概念:我们将一组语句构建成一个事务(trans action),当所有语句顺利执行之后,事务可以被提交(commit):否则,如果其中某个语句遇到错误,那么事务将被回滚,就好像没有任何语句被执行一样 2.需求背景:将多个语句组合成事务的主要原因是为了确保数据库完整性(database integrity) 3.默认情况下,数据库连接处于自动提交模式(autocommit mode),每个SQL语句一旦被执行便被提交给数据库,一旦命令被提交就…
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…
1.原理:反射+内省 2.反射:动态创建对象 3.内省:动态处理对象的属性值 4.结果集处理: (1)把结果集中的一行数据,封装成一个对象,专门针对结果集中只有一行数据的情况. (2)处理结果集--多行数据,封装成多个对象(list) ✿ 专门针对结果集中只有一行数据的情况(把结果集中的一行数据,封装成一个对象) BeanHandler public class BeanHandler<T> implements IResultHandler2<T> { private Class…
jdbc.url=jdbc:Oracle:thin:@(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.31.0.1)(PORT = 1521))(ADDRESS = (PROTOCOL = TCP)(HOST = 192.31.0.2)(PORT = 1521))(LOAD_BALANCE = ON)(FAILOVER =ON))(CONNECT_DATA = (SERVER = DEDICATED)(INS…
存储过程: BEGIN select * from teacher; SELECT * FROM student; END public Object GetMyBOProjectProductList(@PathVariable(value = "userid") int userid) { String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; String url = "jdbc…
public static ArrayList<HashMap<String,Object>> query(Connection conn,String sql, Object[] paras) throws Exception { PreparedStatement statement = null; ResultSet ss = null; String str = "";//打日志使用 ArrayList<HashMap<String,Obje…
了解数据库连接池 @author ixenos 数据库连接是有限的资源,如果用户需要离开应用一段时间,那么他占用的连接就不应该保持开放状态: 另一方面,每次查询都获取连接并在随后关闭它的代价也很高. 解决上述问题的方法就是使用数据库连接池(类似线程池的概念). 这意味着数据库连接在物理上并未被关闭,而是保留在一个队列中被反复重用. 连接池是种服务,JDBC规范为实现者提供了用以实现连接池服务的手段, 但JDK本身没有实现,数据库供应商的JDBC驱动程序一般也没有, 相反,Web容器和应用服务器的…
ResultSet内外移动 @author ixenos 内外移动指位置光标的移动 内移动就是一个ResultSet得到后的那个光标! 外移动就是多个ResultSet的迭代 内移动 一般的数据库都不允许单个查询提交多个SELECT语句, 1.execute执行SQL语句后,返回一个结果集ResultSet, 2.其中有个光标next在第一个元组之前(想象一下),调用hasNext就会判断光标下一个元组存不存在 3.rs.next定位行(元组triple),rs.getXXX定位列(字段fiel…
JDBC 读写LOB大对象 @author ixenos LOB 除了数字.字符串和日期之外,许多数据库还可以存储大对象,例如图片或其他数据, 在SQL中,二进制(字节型)大对象称为BLOB,字符型大对象称为CLOB 读取LOB流程 i.     执行SELECT语句 ii.    ResultSet调用getBlob或getClob方法获取Blob或Clob类型的对象 iii.   Blob调用getBytes或getInputStream方法获取Image等对象 iv.   代码如下: Pr…
JDBC怎么加载驱动 @author ixenos 分析 1.JDBC是一套连接数据库的接口(放在java.util.sql.Driver类中),不同的数据库依此接口各自实现Java连接到数据库的操作,这些具体的实现就叫做驱动: 2.当只连接一个数据库时,我们可以new 驱动对象来使用,但是当多数据库连接时,要多次创建Driver示例,多次创连接Connection,有些繁琐,这时,sun提供了一个驱动的管理器DriverManager,注册驱动就可以调用: 3.但是每次还是要创Driver实例…
代码: package com.hy.fieldandvalue; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import jav…
======================================= 5.storm的定时器以及与mysql的整合使用 功能需求:实现每五秒钟打印出当前时间,并将发送出来的数据存入到mysql数据库当中. 详见代码. 打包到集群上运行, 打包成jar包,选择4M的那个带依赖的jar包,上传到node02上,所在路径为: /export/stormTickTimeMysql.jar 执行storm命令运行jar包: cd /export/servers/apache-storm-1.1.…
1. SQL 2000 下载补丁 SQL2KSP4 ,进行安装 2.找到SQL2KSP4\install\instcat.sql 并在sql2000 中打开查询分析器中执行…
1.载入驱动程序. 注冊驱动程序有多方法,Class.forName();是一种显式地载入.当一个驱动程序类被Classloader装载后,在溶解的过程中,DriverManager会注冊这个驱动类的实例.这个调用是自己主动发生的,也就是说DriverManager.registerDriver()方法被自己主动调用了, Class.forName("oracle.jdbc.driver.OracleDriver"); 当然我们也能够直接调用DriverManager.register…
一.概述JDBC JDBC从物理结构上说就是Java语言访问数据库的一套接口集合. 从本质上来说就是调用者(程序员)和实现者(数据库厂商)之间的协议. JDBC API: 使得开发人员可以使用纯Java的方式来连接数据库,并进行操作. ODBC:基于C语言的数据库访问接口. JDBC:是Java版的ODBC. JDBC 特性:高度的一致性.简单性(常用的接口只有4.5个). 驱动程序按照工作方式分为四类: 1.JDBC-ODBC bridge + ODBC 驱动 JDBC-ODBC bridge…
Java基础常见英语词汇(共70个) ['ɔbdʒekt] ['ɔ:rientid]导向的                             ['prəʊɡræmɪŋ]编程 OO: object-oriented ,面向对象 OOP: object-oriented programming,面向对象编程 [dɪ'veləpmənt][kɪt]工具箱                              ['vɜːtjʊəl]虚拟的 JDK:Java development kit, j…