(6)批处理操作
package org.addbetchdemo; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.util.Date; public class AddDetchDemo { /** * @param args */ public static final String DBDRIVER = "com.mysql.jdbc.Driver"; //连接地址是由各个数据库生产商单独提供的,所以需要单独记住 public static final String DBURL = "jdbc:mysql://localhost:3306/test"; //连接数据库的用户名 public static final String DBUSER = "root"; //连接数据库的密码 public static final String DBPASS = ""; public static void main(String[] args) throws Exception { // TODO Auto-generated method stub Connection con = null; //表示数据库的连接对象 PreparedStatement pstmt = null; //表示数据库更新操作 String sql = "insert into java_study.person values(?,?,?)"; Class.forName(DBDRIVER); //1、使用CLASS 类加载驱动程序 System.out.println(sql); con = DriverManager.getConnection(DBURL,DBUSER,DBPASS); //2、连接数据库 pstmt = con.prepareStatement(sql); //使用预处理的方式创建对象 for (int i = 0;i<10;i++){ pstmt.setString(1, "org"+i); //第一个?号的内容 pstmt.setInt(2, i); //第二个?号的内容 pstmt.setDate(3, new java.sql.Date(new java.util.Date().getTime())); pstmt.addBatch(); } int[] i = pstmt.executeBatch(); //执行SQL 语句,更新数据库 System.out.println(i); pstmt.close(); con.close(); // 4、关闭数据库 } }
(7)事务操作
package org.transactiondemo; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; public class TransactionDemo { /** * @param args */ //驱动程序就是之前在classpath中配置的JDBC的驱动程序的JAR 包中 public static final String DBDRIVER = "com.mysql.jdbc.Driver"; //连接地址是由各个数据库生产商单独提供的,所以需要单独记住 public static final String DBURL = "jdbc:mysql://localhost:3306/test"; //连接数据库的用户名 public static final String DBUSER = "root"; //连接数据库的密码 public static final String DBPASS = ""; public static void main(String[] args) throws Exception { // TODO Auto-generated method stub Connection con = null; //表示数据库的连接对象 Statement stmt = null; Class.forName(DBDRIVER); //1、使用CLASS 类加载驱动程序 con = DriverManager.getConnection(DBURL,DBUSER,DBPASS); //2、连接数据库 con.setAutoCommit(false); stmt = con.createStatement(); //3、Statement 接口需要通过Connection 接口进行实例化操作 try{ stmt.addBatch("insert into java_study.person values(\'Tom\',20,\'2012-01-01\')"); //执行SQL 语句,插入、更新、删除数据 stmt.addBatch("insert into java_study.person values(\'Tom\',20,\'2012-01-01\')"); stmt.addBatch("insert into java_study.person values(\''Tom\',20,\'2012-01-01\')"); stmt.executeBatch(); con.commit(); } catch(Exception e){ con.rollback(); } stmt.close(); con.close(); // 4、关闭数据库 } }
(8)获取数据库以及结果集的metadata信息
获取数据库的metadata信息
我们可以通过connection.getMetaData方法来获取数据库的元数据信息,它的类型是DatabaseMetaData。
获取数据库的元数据信息private static void test1() throws SQLException{ String dbURL = "jdbc:mysql://localhost/mysql"; Connection con = DriverManager.getConnection(dbURL, "root", "123"); DatabaseMetaData dbmd = con.getMetaData(); System.out.println("数据库:" + dbmd.getDatabaseProductName() + " " + dbmd.getDatabaseProductVersion()); System.out.println("驱动程序:" + dbmd.getDriverName() + " " + dbmd.getDriverVersion()); ResultSet rs = dbmd.getTables(null, null, null, null); System.out.println(String.format("|%-26s|%-9s|%-9s|%-9s|", "表名称","表类别","表类型","表模式")); while(rs.next()) { System.out.println(String.format("|%-25s|%-10s|%-10s|%-10s|", rs.getString("TABLE_NAME"),rs.getString("TABLE_CAT"), rs.getString("TABLE_TYPE"), rs.getString("TABLE_SCHEM"))); }}
获取结果集的元数据信息
我们可以通过使用resultset.getMetaData方法来获取结果集的元数据信息,它的类型是ResultSetMetaData。
获取结果集的元数据信息private static void test2() throws SQLException{ String dbURL = "jdbc:mysql://localhost/test"; Connection con = DriverManager.getConnection(dbURL, "root", "123"); Statement st = con.createStatement(); ResultSet rs = st.executeQuery("select ID, NAME from user"); ResultSetMetaData rsmd = rs.getMetaData(); for (int i = 1; i <= rsmd.getColumnCount(); i++) { System.out.println("Column Name:" + rsmd.getColumnName(i) + "; Column Type:" + rsmd.getColumnTypeName(i)); }}