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());刪掉。就可以了

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM