#使用说明
//1.加载驱动
Class.forName("com.mysql.jdbc.Driver");//oracle.jdbc.driver.OracleDriver
//2.获取数据库连接
Connection conn = DriverManager.getConnection(
"jdbc:mysql://127.0.0.1:3306/select_test","root","123456");
//URL规范:jdbc:subprotocol:other stuff
//jdbc:mysql://hostname:port/databasename
//jdbc:oracle:thin:@hostname:port:databasename
//3.创建一个Statement对象
Statement stmt = conn.createStatement();
//4.执行SQL
/*
Statement有三种执行sql语句的方法
1.execute 可以执行任何SQL 放回一个boolean值
如果执行返回第一个结果是ResultSet则返回true,否则false
2.executeQuery 执行select语句 返回结果集
3.executeUpdate 用于执行DML语句 返回一个整数
*/
//5.关闭资源
#基本知识
#Connection
有控制事务API
#Statement
#PreparedStatement
PreparedStatement pstmt = conn.preparedStatement("inster into student_table values(null,?,1)");
for(int 1=0;i<5;i++){
pstmt.setString(1,"姓名");
pstmt.executeUpdate();
}
#CallableStatement 调用存储过程
CallableStatement cstmt = conn.prepareCall("{call add_pro(?,?,?)}");
cstmt.setInt(1,4);
cstmt.setInt(2,5);
//注册CallableStatement的第三个参数是int类型
cstmt.registerOutParameter(3,Type.INTEGER);
//执行存储过程
cstmt.execute();
//获取输出存储过程传出的值
System.out.println("结果:" + cstmt.getInt(3));
#ResultSet
- 可滚动、可更新的结果集
- 处理blog字段
- 使用ResultSetMetaData分析结果集
#DatabaseMetaData
1.suppersBatchUpdates查看是否支持批量更新
//保存当前自动提交模式
boolean autoCommit = conn.getAutoCommit();
conn.setAutoCommit(false);
Statement stmt = conn.createStatement();
//收集多条sql
stmt.addBatch(sql1);
stmt.addBatch(sql2);
stmt.addBatch(sql3);
.......
//提交所有Sql
stmt.executeBatch();
conn.commit();
//恢复自动提交模式
conn.setAutoCommit(autoCommit);
2.分析数据库信息
DatabaseMetaData dbmd = conn.getMetaData();
ResultSet rs = dbmd.getTableTypes();//支持表类型
//获取当前数据库的数据表信息
rs = dbmd.getTables(null,null,"%",new String[]{"TABLE"});
//获取表中主键
rs = dbmd.getPrimaryKeys(null,null,"student_table");
//获取当前数据库全部存储过程
rs = dbmd.getProcedures(null,null,"%");
//获取两个表间的外键
//获取表中所有列
rs = dbmd.getColumns(null,null,"student_table","%");
.....
#事务控制
......