.循环执行在不使用jdbc批量操作的前提下
要进行批量操作可以 效率相对jdbc批量操作低一些
普通的循环操作代码如下:
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "root");
// String sql = "update user set power=? where username=?";
String sql = "insert into user values (?,?,?)";
//delete , insert 和update都是类似调用 executeUpdate 方法
//3 获取处理器
long start = System.currentTimeMillis();
for (int i = 0; i < 100; i++) {
statement = conn.prepareStatement(sql);
//注入值 数字为第几个问号? 从1开始
statement.setString(1, "赵朔"+i);
statement.setString(2, "赵朔"+i);
statement.setInt(3, 3);
//4获取影响行数
int result = statement.executeUpdate();
}
System.out.println(System.currentTimeMillis()-start);
这个执行效率偏低,我的计算机插入100条数据进去大约需要197ms。
下面来看一下jdbc的默认的批量操作方法。
相对于第一种批量操作,效率更高
long start = System.currentTimeMillis();
statement = conn.prepareStatement(sql);
for (int i = 0; i < 100; i++) {// 197ms
//注入值 数字为第几个问号? 从1开始
statement.setString(1, "赵朔"+i);
statement.setString(2, "赵朔"+i);
statement.setInt(3, 3);
statement.addBatch();//添加到批量运算中
}
//4获取影响行数 返回的是数组
int [] result = statement.executeBatch();
System.out.println(System.currentTimeMillis()-start);
这里效率相对要高一些,插入100条数据大约花了155ms,还是可以看出效率还是差了很多的。毕竟这里只有100条数据。如果你对数据量不是很明确,你可以看一下百度的搜索引擎,我就搜一下“电脑”这个名词吧。
可以看到光结果就有一亿条,如果是很多个关键词搜搜呢,那就是上百亿,千亿一直到你难以想象的数量级。可以想想两者的效率到底差了多少。
而后再来说一下结果集的常用方法
ResultSet resultSet
//获取结果集中对应类型的字段值
// resultSet.getXXX
// resultSet.getString("字段名")
// resultSet.getString(index)
resultSet.getInt(columnIndex)
resultSet.getDate(columnIndex)
//当不知道字段类型的时候可以使用
resultSet.getObject(columnIndex)
//获取结果集中的所有信息
ResultSetMetaData rsmd = resultSet.getMetaData();
//结果集有多少列
rsmd.getColumnCount();
//获取指定列的列明
rsmd.getColumnName(column);
//获取指定列的类型
rsmd.getColumnType(column)
//获取指定列类型的名字
rsmd.getColumnTypeName(column)