JDBC的编码步骤
1. 注册JDBC驱动程序
// 如果使用MySQL数据库:
Class.forName("com.mysql.jdbc.Driver");
// 如果使用Oracle数据库:
Class.forName("oracle.jdbc.driver.OracleDriver");
2. 获取数据库连接
Connection conn = DriverManager.getConnection(url,user,password);
// 与MySQL数据库连接:
url:jdbc:mysql://localhost:3306/自己创建的MySQL数据库名称
user:用户名
password:密码(自己安装的时候设置的密码)
// 与Oracle数据库连接:
url:jdbc:oracle:thin:@localhost:1521:orcl
user与password和MySQL的一致
3. 准备sql语句
String sql = "sql语句";
4. 创建发送SQL语句的对象(执行者)
两种方式:需要使用类型为Statement或PreparedStatement的对象来构建并向数据库提交SQL语句
4.1:创建Statement接口操作数据库,向数据库发送命令:
Statement stat = conn.createStatement();
4.2:创建PreparedStatement接口操作数据库,向数据库发送命令(预编译sql语句):
注:预编译sql语句,要给sql语句添加参数,通过预编译对象赋值。
PreparedStatement preparedStatement = conn.prepareStatement(sql);
赋值:
setXxx(int 第几个问号,Object 实际参数);
例:
prestat.setInt(第一个参数,第二个参数);
prestat.setString(第一个参数,第二个参数);
prestat.setObject(第一个参数,第二个参数);
PreparedStatement和Statement的区别:
PreparedStatement是Statement的子接口,它具有预编译,预处理的功能,所以效率要比Statement高,而且它可以识别sql语句中的参数和占位符(可以传参)如果sql语句中的参数较多,需要拼接字符串时,用PreparedStatement非常方便。
5. 执行sql语句
5.1:Statement方式:
// 增删改返回的是影响行数:
int res = stat.executeUpdate(sql);
// 查返回的是结果集:
ResultSet rs = stat.executeQuery(sql);
5.2:PreparedStatement方式:
// 增删改返回的是影响行数:
int res = stat.executeUpdate();
// 查返回的是结果集:
ResultSet rs = stat.executeQuery();
ResultSet取数据方式:rs就是数据库游标,next相当于游标的指针向前移动,并且返回boolean值,是否有记录
while(rs.next()) {
// 获取数据有两种方法,一个是按照列的索引来获取,一个是按照列名来获取
// 索引从1开始(Java中只有JDBC是索引从1开始的)
int id = rs.getInt(1);
// college不一定是列名,也可能是列的别名
String college = rs.getString("college");
Date date = rs.getDate("update");
System.out.println("id=" + id);
System.out.println("college=" + college);
System.out.println("update=" + date);
// 到此一条记录读取完成,下一个循环是下一个记录
}
6. 释放资源
stat.close();
conn.close();
preparedStatement.close();
如果返回的是结果集需要释放:rs.close();