您的位置:首页 > 数据库

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);

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