jdbc之ResultSet
创建一个数据库名称为jdbc,然后在jdbc数据库下创建一张users表,如下
package jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class ResultSetDemo {
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
try {
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/jdbc?useSSL=false";
String username = "root";
String password = "root";
//1.获取Connection对象
conn = DriverManager.getConnection(url,username,password);
String sql = "select*from users";
//2.创建Statement对象并设置常量
Statement st = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
//Statement stmt=con.createStatement(int type,int concurrency);我们在访问数据库的时候,在读取返回结果的时候,可能要前后移动指针,比如我们先计算有多少条信息,这是我们就需要把指针移到最后来计算,然后再把指针移到最前面,逐条读取,有时我们只需要逐条读取就可以了。还有就是有时我们只需要读取数据,为了不破坏数据,我们可采用只读模式,有时我们需要望数据库里添加记录,这是我们就要采用可更新数据库的模式。
//3.执行SQL并将获取的数据信息存放在ResultSet中
ResultSet rs = st.executeQuery(sql);
//4.取出ResultSet中指定数据的信息
System.out.println("第2条数据的name值为");
rs.absolute(2);//将指针定位到结果集中第2行数据
System.out.println(rs.getString("name"));
System.out.print("第一条数据的name值为:");
rs.beforeFirst();//将指针定位到结果集中第一行数据之前
rs.next();//指针向后滚动
System.out.println(rs.getString("name"));
System.out.print("第4条数据的name值为:");
rs.afterLast();//将指针定位到结果集中最后一条数据之前
rs.previous();//将指针向前滚动
System.out.println(rs.getString("name"));
}catch(Exception e) {
e.printStackTrace();
}finally {
//释放资源
if(stmt != null) {
try {
stmt.close();
}catch(SQLException e) {
e.printStackTrace();
}
stmt = null;
}
if(conn != null) {
try {
conn.close();
}catch(SQLException e) {
e.printStackTrace();
}
conn = null;
}
}
}
}