示例:
import java.sql.*;
import java.util.*;
import java.io.*;
import static java.sql.ResultSet.*;
public class ResultSetTest
{
private String driver;
private String url;
private String user;
private String pass;
Connection conn;
PreparedStatement pstmt;
ResultSet rs;
public void initParam(String paramFile)throws Exception
{
//使用Properties类来加载属性文件
Properties props = new Properties();
props.load(new FileInputStream(paramFile));
driver = props.getProperty("driver");
url = props.getProperty("url");
user = props.getProperty("user");
pass = props.getProperty("pass");
}
public void query(String sql)throws Exception
{
try
{
//加载驱动
Class.forName(driver);
//获取数据库连接
conn = DriverManager.getConnection(url , user , pass);
//使用Connection来创建一个PreparedStatement对象
//传入控制结果集可滚动,可更新的参数。
pstmt = conn.prepareStatement(sql , ResultSet.TYPE_SCROLL_INSENSITIVE
, ResultSet.CONCUR_UPDATABLE);
rs = pstmt.executeQuery();
rs.last();
int rowCount = rs.getRow();
for (int i = rowCount; i > 0 ; i-- )
{
rs.absolute(i);
System.out.println(rs.getString(1) + "\t"
+ rs.getString(2) + "\t" + rs.getString(3));
//修改单元格多对应的值
rs.updateString(2 , "学生名" + i);
//提交修改
rs.updateRow();
}
}
//使用finally块来关闭数据库资源
finally
{
if (rs != null)
{
rs.close();
}
if (pstmt != null)
{
pstmt.close();
}
if (conn != null)
{
conn.close();
}
}
}
public static void main(String[] args) throws Exception
{
ResultSetTest rt = new ResultSetTest();
rt.initParam("mysql.ini");
rt.query("select * from student_table");
}
}
如果要创建可更新的结果集,查询语句查询的数据通常只能来源于一个数据表,而且查询结果结果的数据列中必须包含主键列,否则更新失败。
- int getColumnCount()
- String getColumnName(int column)
- int getColumnType(int column)