本节课我学习的主要内容有:
1.ResultSet接口
ResultSet接口:
它的对象封装的是数据查询后的结果。
方法:
first() 移动到第一行。
next() 游标后移一位。
previous() 游标前移一位。
getXXXX() 返回当前行的某一列数据。
updateXXXX() 更新当前行中的某一列数据。
absolute() 游标的绝对定位。
relative() 游标的相对定位。
ResultSet的类型:
默认类型,仅向前移动:
ResultSet.TYPE_FORWARD_ONLY;
敏感类型,可滚动的:
ResultSet.TYPE_SCROLL_SENSITIVE;
敏感类型可以对结果集中的数据进行update并可以影响到数据库。
不敏感类型,可滚动的:
ResultSet.TYPE_SCROLL_INSENSITIVE;
ResultSet的并发性:
默认、只读:
ResultSet.CONCUR_READ_ONLY;
可修该的:
ResultSet.CONCUR_UNDATABLE;
Test01类(测试查询和查询修改数据库):
package LessonForJDBC03;
import java.sql.*;
import java.util.*;
class StudentBean2
{
private int No;
private String Name;
private String Sex;
private int Age;
public StudentBean2()
{
}
public StudentBean2(int no, String name, String sex, int age)
{
super();
No = no;
Name = name;
Sex = sex;
Age = age;
}
public int getNo()
{
return No;
}
public void setNo(int no)
{
No = no;
}
public String getName()
{
return Name;
}
public void setName(String name)
{
Name = name;
}
public String getSex()
{
return Sex;
}
public void setSex(String sex)
{
Sex = sex;
}
public int getAge()
{
return Age;
}
public void setAge(int age)
{
Age = age;
}
}
class StudentDAO2
{
public static int addStudents(Connection con)
{
int result = 0;
String sql = "INSERT INTO STUDENTTEST01 (NO,NAME,SEX,SAGE) VALUSE (0011,'帅哥','男',22)";
try
{
Statement sta = con.createStatement();
result = sta.executeUpdate(sql);
} catch (SQLException e)
{
e.printStackTrace();
}
return result;
}
public static int deleteInf(Connection con,String deletinf)
{
int result = 0;
String sql = deletinf;
try
{
Statement sta = con.createStatement();
result = sta.executeUpdate(sql);
} catch (SQLException e)
{
e.printStackTrace();
}
return result;
}
public static ArrayList<StudentBean2> getAllStudentInf(Connection con)
{
ArrayList<StudentBean2> student_list = new ArrayList<StudentBean2>();
String sql = "SELECT NO,NAME,SEX,SAGE FROM STUDENTTEST01";
try
{
Statement sta = con.createStatement();
ResultSet result = sta.executeQuery(sql);
while (result.next())
{
StudentBean2 sb = new StudentBean2(result.getInt("NO"),result.getString("NAME"),
result.getString("SEX"),result.getInt("SAGE"));
student_list.add(sb);
}
} catch (SQLException e)
{
e.printStackTrace();
}
return student_list;
}
public static void findInf(Connection con,int line)
{
String sql = "SELECT NO,NAME,SEX,SAGE FROM STUDENTTEST01";
try
{
//敏感的可修改数据库的。
Statement sta = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
ResultSet result = sta.executeQuery(sql);
//先绝对定位查询试一试
result.absolute(line);
System.out.println("学号:"+result.getInt("NO")+" 姓名:"+result.getString("NAME")+
" 性别:"+result.getString("SEX")+" 年龄:"+result.getInt("SAGE"));
//改值
result.updateString("SEX","女");
result.updateRow();//修改完后更新。
} catch (SQLException e)
{
e.printStackTrace();
}
}
}
public class Test01
{
public static Connection getConnection(String driver_class,String url,String user,String password)
{
Connection con = null;
try
{
Class.forName(driver_class);
con = DriverManager.getConnection(url, user, password);
} catch (ClassNotFoundException | SQLException e)
{
e.printStackTrace();
}
return con;
}
public static void closeConnection(Connection con)
{
if (con == null)
{
try
{
con.close();
} catch (SQLException e)
{
e.printStackTrace();
}
}
}
public static void main(String[] args)
{
Scanner input = new Scanner(System.in);
String driver_class = "oracle.jdbc.OracleDriver";
String url = "jdbc:oracle:thin:@localhost:1521:orcl";
String user = "scott";
String password = "******";
Connection con1 = getConnection(driver_class,url,user,password);
//查询并打印STUDENTTEST01中的所有数据。
ArrayList<StudentBean2> student_list1 = StudentDAO2.getAllStudentInf(con1);
student_list1.forEach((k1)->{
System.out.println("学号:"+k1.getNo()+" 姓名:"+k1.getName()+" 性别:"+k1.getSex()+" 年龄:"+k1.getAge());
});
//查询并更新。
StudentDAO2.findInf(con1, input.nextInt());
}
}
本篇部分文字来源于:
咕嘟咖啡杨海滨老师 — 《java编程语言高级特性》
在这里十分感谢老师能够给我带来学习的激情。
2020.11.17
本文章是本人学习笔记,不进行任何商用所以不支持转载请理解!也请别拿去商用!
如果觉得对你有帮助那么欢迎你随时来回顾!
只为记录本人学习历程。
毕