• ResultSet..next()取不到第一条数据


    今天的博客内容主要是来自于我今天做的业务。使用JDBC链接远程数据,并存储到本地数据库的操作。

    我的代码之前是这样的

    @SuppressWarnings("static-access")
    	public static void main(String[] args) throws Exception {
    		Connection connK3 = null;
    		Statement stmtK3 = null;
    		ResultSet rsK3 = null;
    		ErpAxConfig2 e =new ErpAxConfig2();
    		e.setDriverClassName("com.mysql.jdbc.Driver");
    		e.setUrl("jdbc:mysql://xxx.xxx.xxx.xx:3306/xxxxxxxxt?useUnicode=true&characterEncoding=utf8");//自己的url地址
    		e.setUsername("abc");
    		e.setPassword("123456");
    		e.setInitialSize("1");
    		e.setMaxActive("20");
    		e.setMaxWait("60000");
    		e.setTimeBetweenEvictionRunsMillis("60000");
    		e.setMinEvictableIdleTimeMillis("30000");
    		e.setTestOnBorrow("false");
    		e.setValidationQuery("select 'x'");
    		e.setTestWhileIdle("true");
    		e.setTestOnReturn("true");
    		connK3= DbPoolConnection.setddsreadAndddsWrite(e).getInstance().getReadConnection();
    		stmtK3 = connK3.createStatement();
    	
    		List<DataInfo> list = new ArrayList<>();
    		String strSQL ="select wlmc name,wlbm code ,setofbook zt  from t_midc_production;"
    				+ "select * from t_midc_data_info";
    				
    	    for(String sql :strSQL.split(";")){
            	System.out.println(sql);
    			rsK3 = stmtK3.executeQuery(sql);
    			System.out.println(rsK3.next());
    			while (rsK3.next()) {
    				DataInfo obj = new DataInfo();
    				obj.setId(UUID.getId());
    				obj.setCode(rsK3.getString("code"));
    				obj.setName(rsK3.getString("name"));
    				obj.setZt(rsK3.getString("zt"));
    		        if("t_midc_data_info".equals(sql.substring(sql.indexOf("from")+5))){
    					obj.setSite_code(rsK3.getString("site_code"));
    				}
    				obj.setStatus(StatusUtil.EFFECT);
    				int indexOf = sql.indexOf("from");
    				String substring = sql.substring(indexOf+5);
    				obj.setType(substring);
    				list.add(obj);
    			}
            } 
    	    System.out.println(list.size());
    	    for(DataInfo info :list){
    	    	System.out.println(info.getType()+"      "+info.getName());
    	    }
    	}
    

      这样老是取不到第一条数据。输出是这样的

    数据库中的数据是这样的。

    错误的原因就在于我们这里已经取过一次next()的值就是第一条记录,next的指针指向第二条记录,while里面就开始取第二条后面的记录了。

     把输出打印的System.out.println(rsK3.next());删掉。就可以了

  • 相关阅读:
    HDU 4552 怪盗基德的挑战书
    Qt中QUdpSocket序列化问题
    简单Qt网络通信
    QT快捷键
    Qt 程序退出时断言错误——_BLOCK_TYPE_IS_VALID(pHead->nBlockUse),由setAttribute(Qt::WA_DeleteOnClose)引起
    [转载]
    [百科]
    [百科]sys/types.h
    string.h文件中函数用法
    c++ <string.h>中包括哪些常用函数
  • 原文地址:https://www.cnblogs.com/cuixiaomeng/p/13689817.html
Copyright © 2020-2023  润新知