SQL语句插入数据库2种方式
2016-02-25 17:17
471 查看
数据库批量插入2种方法:
1.直接插入
sql = “insert into rpt_count_log values(‘pow_power=”+i+”’,’”+starttimes+”’,’”+endtimes+”’,’1’,’9’,’0x053502’,’1’)”;
sta.executeUpdate(sql);
一条一条的执行,这种方法效率非常低,不适合大数据量的插入。
2.批量插入
首先,最重要的一点:将数据库自动提交关闭con.setAutoCommit(false);
}
其次,设置批量插入的规模。例如此处是1620=810*2条记录再一次性提交。
PS:由于之前将自动提交关闭,在批量执行之后要提交commit;添加一条要addBatch()。
}
1.直接插入
sql = “insert into rpt_count_log values(‘pow_power=”+i+”’,’”+starttimes+”’,’”+endtimes+”’,’1’,’9’,’0x053502’,’1’)”;
sta.executeUpdate(sql);
一条一条的执行,这种方法效率非常低,不适合大数据量的插入。
2.批量插入
首先,最重要的一点:将数据库自动提交关闭con.setAutoCommit(false);
public class DBConn { private static Statement sta; public static String url = "10.9.88.61"; private final static String dbURL = "jdbc:sqlserver://"+url+":1433;DatabaseName=POW"; private final static String dbUSR = "sa"; private final static String dbPSW = "Power123"; private Connection con = null; // 连接数据库 public Statement connMsg() { try { Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance(); con=DriverManager.getConnection(dbURL,dbUSR,dbPSW); con.setAutoCommit(false); //最重要的一点 sta = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); } catch(Exception e) { System.out.println(e); } return sta; } // 获得连接 public Connection getConnection() { return this.con; } //关闭数据库 public void closeMsg() { try { sta.close(); con.close(); } catch(Exception e) { System.out.println(e); } }
}
其次,设置批量插入的规模。例如此处是1620=810*2条记录再一次性提交。
PS:由于之前将自动提交关闭,在批量执行之后要提交commit;添加一条要addBatch()。
public void insert(int NESum, int sn, String start, String end) throws SQLException { DBConn DBcon = new DBConn(); Statement sta = DBcon.connMsg(); Connection con = DBcon.getConnection(); final int batchSize = 810; String sql; Random random = new Random(); for(int e = 1; e <= NESum; e++) { sql = "insert into rpt_mains_fail_counts values('pow_power="+ e + "','" + start + "','" + end + "','" + sn + "','0x002700','" + random.nextInt(10000) + "')"; sta.addBatch(sql); sql = "insert into rpt_mains_fail_counts values('pow_power=" + e + "','" + start + "','" + end + "','" + sn + "','0x053200','" + random.nextInt(10) + "')"; sta.addBatch(sql); if(e % batchSize == 0) { sta.executeBatch(); con.commit(); } } sta.executeBatch(); con.commit(); DBcon.connMsg(); }
}
相关文章推荐
- SQL中的三值逻辑
- SQL Server 作业批量停止
- 结束SQL阻塞的进程
- 动态生成SQL Server视图作业
- SQL Server 语句操纵数据库
- SQL(结构化查询语句)
- oracle sql日期比较
- linux快速部署mysql服务器
- sql 存储过程分页
- 在WINXP系统上安装SQL Server企业版的方法
- 通过批处理调用SQL的方法(osql)
- SQL Server 存储过程的分页
- ASP程序与SQL存储过程结合使用详解
- SQL SERVER编写存储过程小工具
- 防御SQL注入攻击时需要注意的一个问题
- PostgreSQL教程(十九):SQL语言函数
- SQL Server复制需要有实际的服务器名称才能连接到服务器
- SQL Server 2000向SQL Server 2008 R2推送数据图文教程