项目里增删改查时遇到的问题
来源:互联网 发布:sql reference 编辑:程序博客网 时间:2024/06/05 10:14
批量提交使用的方法:ps.addBatch(),ps.executeBatch(),ps.clearBatch(),
try {PreparedStatement ps = conn.prepareStatement(sql);final int batchSize = 1000;int count = 0;for (Employee employee : employees) {ps.setString(1, employee.getName());ps.setString(2, employee.getPosition());ps.setString(3, employee.getSex());ps.setDouble(4, employee.getSalary());ps.addBatch();//批量提交if(++count % batchSize == 0) { ps.executeBatch(); ps.clearBatch(); }}int[] r = ps.executeBatch();//最后一次提交,可能不足1000个ps.clearBatch();ps.close();conn.close();} catch (SQLException e) {e.printStackTrace();}
数据库事务
public class TransactionUtil {/* * 处理数据库事务 * */public static Connection conn = DBUtil.getConnection();/** * 设置自动提交状态 * @param state */public static void setAutoCommit(boolean state){try {conn.setAutoCommit(state);} catch (SQLException e) {System.out.println("设置自动提交状态失败");e.printStackTrace();}}/** * 提交 */public static void commit(){try {conn.commit();} catch (SQLException e) {System.out.println("提交失败");e.printStackTrace();}}public static void rollback() {try {conn.rollback();} catch (SQLException e) {System.out.println("回滚失败");e.printStackTrace();}}}
获取自动主键
ps = conn.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);//现在需要第二个参数,激活自动获取key,否则会报错Generated keys not requestaddflag = ps.executeUpdate();rsGeneratedkeys = ps.getGeneratedKeys();
ResultSetMetaData
String sql = "select * from user,student";ResultSet rs = stmt.executeQuery(sql);ResultSetMetaData rsmd = rs.getMetaData();System.out.println("..........ResultSetMetaData............");System.out.println("表名::::::"+rsmd.getTableName(1));//第一列的表名System.out.println("表名::::::"+rsmd.getTableName(4));//第四列的表名//列数int columnCount = rsmd.getColumnCount();//列名String columnName = null;for (int i = 1; i <= columnCount; i++) {columnName=rsmd.getColumnName(i);System.out.println(columnName);}使用 getMetaData() 方法从 ResultSet 中获取 ResultSetMetaData 对象。您可以使用此对象获得列的数目和类型以及每一列的名称。
getColumnCount(); 返回 ResultSet 中的列数。
getColumnName(int); 返回列序号为 int 的列名。
getColumnLabel(int); 返回此列暗含的标签。
isCurrency(int); 如果此列包含带有货币单位的一个数字,则返回 true。
isReadOnly(int); 如果此列为只读,则返回 true。
isAutoIncrement(int); 如果此列自动递增,则返回 true。这类列通常为键,而且始终是只读的。
getColumnType(int); 返回此列的 SQL 数据类型。
可滚动结果集
PreparedStatement stmt2 = conn.prepareStatement(sql, ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);ResultSet rs2 = stmt2.executeQuery();//判断一下mysql数据库是否支持TYPE_FORWARD_ONLYDatabaseMetaData dbmd=conn.getMetaData();if(dbmd.supportsResultSetType(ResultSet.TYPE_FORWARD_ONLY)){ System.out.println("*******MySQL支持TYPE_FORWARD_ONLY结果集**********");}else{ System.out.println("*******MySQL不支持TYPE_FORWARD_ONLY结果集**********");}System.out.println("这是"+dbmd.getDatabaseProductName()+"数据库"+ ",版本是:"+dbmd.getDatabaseProductVersion());//以下只有在设置为“可滚动”时才可以用 rs2.first();//使第一行成为当前行 System.out.println(rs2.getString(1)); //得到第一个雇员号 rs2.last(); //使最后一行成为当前行 System.out.println(rs2.isLast()); System.out.println(rs2.getString(1)); // rs2.next();System.out.println("0000000000000");System.out.println(rs2.isAfterLast());//是否位于最后一行之后 System .out.println(rs2.getRow()); rs2.previous(); //向前移动移动一行,此处为倒数第二行 System.out.println(rs2.getString(1)); rs2.absolute(6); //定位到第6行 System.out.println(rs2.getString(1));
阅读全文
0 0
- 项目里增删改查时遇到的问题
- eclipse里复制项目遇到的问题分析
- 项目遇到的问题
- 项目遇到的问题
- ssm 项目遇到mapper 里循环两次取参数的问题
- 我在vs2005 里遇到的问题
- 第八周作业里遇到的问题
- css 里设置背景图片遇到的问题
- Java里遇到的一些问题
- 项目部署遇到的问题
- 项目中遇到的问题
- 项目中遇到的问题
- CAN项目---遇到的问题
- 项目中遇到的问题
- 项目中遇到的问题
- 项目中遇到的问题
- 项目中遇到的问题
- 项目提交遇到的问题
- 阿里云大数据计算服务MaxCompute(上篇)
- 美国对卡巴斯基软件的禁令开了一个丑陋的先例
- ElasticSearch的安装与使用(一)
- 普及练习场 字符串处理 拼数
- 刷新对css属性值继承的认识
- 项目里增删改查时遇到的问题
- centos7 gateone安装
- es6深层次数组深拷贝
- test
- 冒泡排序
- 深入分析MFC文档视图结构(项目实践)
- java poi之Excel的读取
- 在eclipse中使用maven构建Web项目时报错: Plugin org.apache.maven.plugins:maven-surefire-plugin:2.12.4 or one of i
- linux编译libevent程序