first
last
AfterLast
// 打开链接
Connection conn = DriverManager.getConnection(DB_URL, USER, PASSWORD);
Statement statement = conn.createStatement();
// 查询
String sql = "select * from student";
ResultSet ret = statement.executeQuery(sql);
while (ret.next()){
// 通过列序号获取
int uid = ret.getInt(1);
// 通过列名称获取
String name = ret.getString("sname");
System.out.println(uid + ", " + name);
}
// 关闭资源
ret.close();
statement.close();
conn.close();
3.JDBC之代码规范化
// 定义
try{
// 实例化
}
finally{
// 关闭资源
}
4.结果集光标与元数据
JBDC主要的类
DriverManager Connection conn = DriverManager.getConnection(DB_URL, USER, PASSWORD); Statement statement = conn.createStatement(); int executeUpdate(String sql) // 执行增、删、改 ResultSet executeQuery(String sql) // 执行查询 boolean execute(String sql) // 执行增、删、改、查
ResultSet滚动结果集
一个二维表格,内部维护了一个行光标(游标)
next() // 最常用
beforeFirst()
afterLast()
first()
last()
getRow()
absolute()
relative()
isBeforeFirst()
isAfterLast()
isFirst()
isLast()
元数据
// 元数据 ResultSetMetaData ResultSet.getMetaData() // 获取结果集列数 int ResultSetMetaData.getColumnCount() // 获取指定列的列名 String ResultSetMetaData.getColumnName(int colIndex)
5.结果集的特性(是否可滚动、是否敏感、是否可更新)
确定结果集特性
1、是否可滚动
2、是否敏感
3、是否可更新
// 不滚动, 不敏感,不可更新 Statement createStatement() // 滚动支持 Statement createStatement(int resultSetType, int resultSetConcurrency) resultSetType: ResultSet.TYPE_FORWARD_ONLY // 不滚动 ResultSet.TYPE_SCROLL_INSENSITIVE // 滚动,不随数据库变化而变化 ResultSet.TYPE_SCROLL_SENSITIVE // 滚动,不随数据库变化而变化 resultSetConcurrency // 是否通过修改结果集二反向影响数据库 ResultSet.CONCUR_READ_ONLY // 结果集只读 ResultSet.CONCUR_UPDATABLE // 结果集可更新
6.PreparedStatement的用法
PreparedStatement是Statement子接口
1、防止SQL注入攻击
2、提高代码可读性,可维护性
3、提高效率
// 打开链接
Connection conn = DriverManager.getConnection(DB_URL, USER, PASSWORD);
// 使用预处理查询, 使用?占位
String sql = "select * from student where sid = ?";
PreparedStatement statement = conn.prepareStatement(sql);
// 为参数赋值
statement.setInt(1, 1);
// 获取数据
ResultSet ret = statement.executeQuery();
while (ret.next()){
String name = ret.getString("sname");
System.out.println(name);
}
// 关闭资源
ret.close();
statement.close();
conn.close();










