Jdbc批量插入

1.实例

@Test
	public void teseInsertBatch()
	{
		Connection conn = null;
		try 
		{  
		      Class.forName("com.mysql.jdbc.Driver");  
		      conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "123");  
		      conn.setAutoCommit(false);  
		      
		      String sql = "INSERT INTO person(name,age) VALUES(?,?)";  
		      PreparedStatement prest = conn.prepareStatement(sql,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);  
		      for(int i = 0; i < 100; i++)
		      {  
		         prest.setString(1, "192.168.1.1");  
		         prest.setInt(2, i);  
		         prest.addBatch();  
		      }  
		      prest.executeBatch();  
		      conn.commit();  
		      conn.close();  
		} 
		catch (SQLException ex) 
		{
			ex.printStackTrace();
		} 
		catch (ClassNotFoundException ex) 
		{  
			ex.printStackTrace();
		}  
		finally
		{
			if(conn!=null)
			{
				try
				{
					conn.close();
				}
				catch (SQLException e) 
				{
					e.printStackTrace();
				}
			}
		}
	}

2.解释

PreparedStatement java.sql.Connection.prepareStatement(String sql, int resultSetType, int resultSetConcurrency)

       说明一下构造PreparedStatement最后两个参数的意思

      (1)resultSetType

                指定ResultSet的type,可选的值有:

                1)TYPE_FORWARD_ONLY

                      缺省类型。只允许向前访问一次,并且不会受到其他用户对数据库所做修改的影响

                2)TYPE_SCROLL_INSENSITIVE

                      允许在列表中向前或向后移动,甚至可以进行特定定位,例如移至列表中的第4个记录或者从当前位置后移2个记录。不会受到其他用户对该数据库所做更改的影响

                3)TYPE_SCROLL_SENSITIVE

                      像TYPE_SCROLL_INSENSITIVE一样,允许在记录中定位。这种类型受其他用户所做更改的影响。如果用户在执行完查询后删除一个记录,那么记录将从resultSet中消失。类似的,对数据的修改也将反映在ResultSet中

      (2)resultSetConcurrency

                指定ResultSet的并发性,表示是否可以更新ResultSet,可选的值有:

                1)CONCUR_READ_ONLY 

                       这是 缺省值,表示不可以更新

                2)CONCUR_UPDATABLE

                      表示可以更新ResultSet


           注意:使用批量操作必须要取消事务的自动提交,所以必须有:

conn.setAutoCommit(false);


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值