前几天碰见了一个很奇葩的问题,使我百思不得其解,今天就写一下我遇见的问题吧,也供大家参考,别和我犯同样的毛病. 首先说下jdbc,jdbc是java是一种用于执行SQL语句的Java API,从jdbc中取值我们一般都是Statement stmt 的next()方法,或者是PreStatement  的next()方法, next()方法用来判断下一条记录是否存在,如果存在就执行一次,游标就向后移动.最开始的时候,游标位于第一条记录之前,也就是说执行一次后,游标移动到第一条记录的位置,随着循环…
ResultSet:结果集.存放数据库中的数据,可以将它想象成一张数据表,通过Statement对象中的executeQuery()方法获得 import com.mysql.jdbc.Statement;import java.sql.Connection;import java.sql.Driver;import java.sql.ResultSet;import java.util.Properties; /** * Created by I am master on 2016/9/29.…
方法一:利用ResultSet的getRow方法来获得ResultSet的总行数 Java代码 ResultSet rs; rs.last(); //移到最后一行 int rowCount = rs.getRow(); //得到当前行号,也就是记录数 rs.beforeFirst(); //如果还要用结果集,就把指针再移到初始化的位置 方法二:利用循环ResultSet的元素来获得ResultSet的总行数 Java代码 ResultSet rs; int rowCount = 0; while…
引用 6 楼  的回复: 好吧各位,应该写getInt(1)但是我要问的是为什么第二次用会出错 啊,好古老的一个问题... 第二次出错的原因,是因为你创建Statement的时候,没有指定结果集(游标)模式! createStatement(int resultSetType, int resultSetConcurrency) resultSetType 就是结果集模式,取值范围是:ResultSet.TYPE_FORWARD_ONLY: cursor may move only forwar…
当我们执行完一条Sql语句,获取到一个 ResultSet 对象后,有时我们需要立即知道到底返回了多少个元素,但是 ResultSet 并没有提供一个 size() 方法 or length 的属性,我们可以一个一个调用 next() 去累加计算,但是我们还有更好的办法 : PreparedStatement statement = ......; ResultSet results = statement.executeQuery(); // 将游标移动到最后一行上results.last()…
测试 jdbc 中连接关闭的时机 写一段程序,测试 jdbc 连接的关闭情况 /** * 测试 jdbc 连接的关闭情况 */ public static void testOpenCon(){ //打开连接 // getOpenCon(); try { //关闭连接 // CON.close(); //如果CON不为空,已连接过 if(CON!= null){ //如果CON是false // isClosed()该方法判断是否关闭连接 返回true false 返回true是已经关闭 返回f…
Java中用类java.util.Date对日期/时间做了封装,此类提供了对年.月.日.时.分.秒.毫秒以及时区的控制方法,同时也提供一些工具方法,比如日期/时间的比较,前后判断等. java.util.Date中采用一个long型的数来保存日期/时间,它表示从格林威治时间1970年1月1日00点00分00秒至今的毫秒数. JDBC中,在这个类的基础之上扩展了3个类:java.sql.Date,java.sql.Time,java.sql.Timestamp. java.sql.Date表示日期…
事务-Transaction 某些情况下我们希望对数据库的某一操作要么整体成功,要么整体失败,经典的例子就是支付宝提现.例如我们发起了支付宝到银行卡的100元提现申请,我们希望的结果是支付宝余额减少100元,银行卡余额增加100元,而不是支付宝的100元被扣除,而银行卡的100元却没收到.也就是说,要么100元从支付宝扣除的同时银行卡也会多出一百元,要么这次提现失败支付宝的100元还在,银行卡也没有收到钱.支付宝扣钱和银行卡收钱,这两件事要么都成功要么都失败. 事物的ACID特性: 满足ACID…
一.DAO设计模式概述###<1>概念 DAO,Data Access Object ,用于访问数据库的对象. 位于业务逻辑和数据持久化层之间,实现对数据持久化层的访问![](1.png) ###<2>作用 隔离了业务层和数据访问层,将两层进行解耦 隔离了不同数据库的实现 增强的程序的可移植性和可扩展性 ![](2.png) ###<3>组成 1. DAO接口(内存插槽的标准):定义操作数据的接口,CRUD 2. DAO实现类(不同内存条厂商生成的内存条):DAO接口的…
最近在数据库查询数据时,由于数据量太大,使用了多线程,通过线程池建了好几个线程,然后调用了一个封装好的jdbc查询语句. 结果在多线程中,ResultSet报错空指针. 仔细查阅后,才发现多个线程访问了同一个connection,事务混乱,导致了空指针. 解决方法: 使用数据库连接池,这样一个线程各自使用一个connection,就不会有冲突了.…