insertrecordstodb.java#1.1.1.1

来自「数据库远程同步软件NetBeans项目源文件 项目采用Jdesktop集成组件」· 1 代码 · 共 130 行

1
130
字号
package com.qixuan.jdbc.util;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.List;

import com.qixuan.jdbc.common.TargetDataBase;



public class InsertRecordsToDb {
	private Connection conn;
	private String TabName = "";//表名
	private List<ColumnData> columns;//字段   
	private int count;
	public String getTabName() {
		return TabName;
	}
	public void setTabName(String tabName) {
		TabName = tabName;
	}
	public List<ColumnData> getColumns() {
		return columns;
	}
	public void setColumns(List<ColumnData> columns) {
		this.columns = columns;
	}
	public  void  ExecuteInsertSql(){		
        PreparedStatement pstmt = null;
        if(conn==null){
        	conn = TargetDataBase.getConnection();
        }        
        DatabaseMetaDataUtil dbmu = new DatabaseMetaDataUtil(conn);
		ResultSetMetaDataUtil rmdu = new ResultSetMetaDataUtil(conn);
		List<String> tableNames = dbmu.getTableNames();
		boolean exist=Boolean.FALSE;
		for(String tableName:tableNames){
			if(TabName.equals(tableName)){
				exist=Boolean.TRUE;
			}					
		}
		if(!exist){
			//System.out.println(" Table '"+TabName+"' doesn't exist");
			 throw new RuntimeException(" Table '"+TabName+"' doesn't exist");			
		}
        int rs=0;        
		StringBuffer sqlsb=new StringBuffer();
		String sql="insert into ";	
		 String[] str = new String[count];
         StringBuffer strNum = new StringBuffer();
         for (int i = 0; i <count; i++) {
        	 if(i!=0){
        		 str[i] = ",?";
        	 }else{
        		 str[i] = "?";
        	 }
            
             strNum.append(str[i]);
         }
		sqlsb.append(sql).append(TabName).append(" values(").append(strNum ).append(") ");
		System.out.println(sqlsb+";columns.size()="+columns.size());
		 try {
			
			 pstmt = conn.prepareStatement(sqlsb.toString());//建立预编译的对象	   
			// int i=1;
			 int i=0;
			for(ColumnData column:columns){			
				i++;
					pstmt.setObject(column.getIndex(),column.getColumnValue(), column.getColumnTypeValue());			
					if(i % count == 0) {
						pstmt.addBatch();
					}
										
			}
			System.out.println(i);
			int[] rss = pstmt.executeBatch();  //进行预编译 将一组记录一组记录存入数据库中
			pstmt.clearParameters();	
			for(int n=0;n<rss.length;n++){
				rs+=rss[n];
			}
			
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}//连接目标端数据库
        
		
		System.out.println("表"+TabName+"已插入"+rs+"条数据");
	}
  /*  public void setPsmt(PreparedStatement pstmt,ColumnData column){
    	int type = column.getColumnTypeValue();
    	pstmt.setObject(parameterIndex, x, targetSqlType);
    	switch (type) {
		case (1):
			pstmt.setObject(parameterIndex, x, targetSqlType);
			break;
		case (4):
			ret = String.valueOf(rst.getInt(colNum));
			break;
		case (5):
			ret = String.valueOf(rst.getInt(colNum));
			break;
		case (6):
			ret = String.valueOf(rst.getFloat(colNum));
			break;
		case (8):
			ret = String.valueOf(rst.getDouble(colNum));
			break;
		case (12):
			ret = rst.getString(colNum);
			break;
		default:
			ret = "not   know";
		}
    }*/
	public int getCount() {
		return count;
	}
	public void setCount(int count) {
		this.count = count;
	}
	public Connection getConn() {
		return conn;
	}
	public void setConn(Connection conn) {
		this.conn = conn;
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?