jdbc练习ResultSet对象,PreparedStatement对象

  1 package star;
  2 
  3 import java.sql.*;
  4 
  5 
  6 //Statement对象每次执行SQL语句时,都会对它进行编译。相当于SQL语句执行多次时,Statement对象会使
  7 //数据库频繁编译相同的SQL语句,从而降低数据库的访问效率。
  8 //所以Statement提供了一个子类PrearedStatement。PreparedStatement对象对SQL语句进行预编译,预编译
  9 //的信息储存在PreparedStatement对象中。当相同的SQL语句再次执行时,程序会使用PreparedStatement对象中的
 10 //数据,而不需要对SQL语句再次编译去查询数据库,这样大大提高了数据访问效率
 11 public class Pres2{
 12     public static void main(String[] args)throws SQLException {
 13     Connection conn = null;
 14     PreparedStatement preStmt=null;
 15     try {
 16         //加载数据库驱动
 17         Class.forName("com.mysql.jdbc.Driver");
 18         //创建应用程序与数据库连接的Connection对象
 19         conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/star?useSSL=false","root","root");
 20         //执行的SQL语句
 21             /*创建语句,里面的参数等可以用问号代替pstmtInsert.setString(1,"a");
 22             给第一个问号赋值"a";pstmtInsert.setString(2,"b");//给第二个问号赋值"b"*/
 23         String sql="insert into users(name,password,email,birthday)"+"values(?,?,?,?)";
 24         //1.创建执行SQL语句的PreparedStatement对象
 25         preStmt=conn.prepareStatement(sql);
 26         //2.为SQL语句中的参数赋值
 27         preStmt.setString(1,"ac");
 28         preStmt.setString(2,"123456");
 29         preStmt.setString(3,"ac@sina.com");
 30         preStmt.setString(4,"1799-12-12");
 31         //3.执行SQL
 32         preStmt.executeLargeUpdate();
 33     }catch (ClassNotFoundException e){
 34         e.printStackTrace();
 35     }finally {
 36         //释放资源
 37         if (preStmt!=null){
 38             try{
 39                 preStmt.close();
 40             }catch (SQLException e){e.printStackTrace();}
 41             conn=null;
 42         }
 43     }
 44 }
 45 }
 46 
 47 
 48 
 49 
 50 //Result主要用于存储结果集,可以通过next()方法有前向后逐个获取结果集中的数据,如果想获取结果集
 51 //中任意数据,则需要在创建Statement对象时,设置2个ResultSet定义的常量
 52 
 53 class Example03{
 54     public static void main(String[] args){
 55         Connection conn=null;
 56         Statement stmt=null;
 57         try{
 58             //加载驱动
 59             Class.forName("com.mysql.jdbc.Driver");
 60             //连接数据库,获取Connection对象
 61             conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/star?useSSL=false","root","root");
 62             String sql="select * from users";
 63             //2。创建Statement对象并设置常量
 64             Statement st=conn.createStatement(
 65                     ResultSet.TYPE_SCROLL_INSENSITIVE,//常量Result.TYPE_SCROLL_INSENITIVE表示结果集可以滚动
 66                     ResultSet.CONCUR_READ_ONLY//常量Result.CONCUR_READ_ONLY表示以只读形式打开结果集
 67             );
 68             //3.执行SQL并将获取的数据信息存放在ResultSet中
 69             ResultSet rs=st.executeQuery(sql);
 70             //4.取出ResultSet中指定数据的信息
 71             System.out.println("第二条数据的name值为");
 72             rs.absolute(2);//将指针定位到结果集中的第2行数据
 73             System.out.println(rs.getString("name"));
 74             System.out.println("第一条数据的email为");
 75             rs.beforeFirst();//将游标移动到开头,第一行之前
 76             rs.next();//将游标向后移动,因为移动到了第一行之前
 77             System.out.println(rs.getString("email"));
 78             System.out.println("第四条数据的name值为");
 79             rs.absolute(4);
 80             //rs.afterLast();//将指针移动到结果集中最后一条数据之后;rs.previous();//将游标向前滚动
 81 
 82         }catch (Exception e){
 83             e.printStackTrace();
 84         }finally {
 85             if(stmt!=null){
 86                 try {
 87                     stmt.close();
 88                 }catch (SQLException e){
 89                     e.printStackTrace();
 90                 }
 91                 stmt=null;
 92             }
 93                 if(conn != null){
 94                     try{
 95                         conn.close();
 96                     }catch (SQLException e){
 97                         e.printStackTrace();
 98                     }
 99                     conn=null;
100 
101                 }
102         }
103     }
104 }
105 /*
106 总,先获取Connection对象连接数据库,然后通过Connection对象创建Statement对象并设置所需的两个常量
107 ,然后执行SQL语句,将获取的数据信息存放在ResultSet中,最后通过ResultSet对象的absolute()方法指定游标移动
108 指定数据行并输出*/

 

上一篇:2.4 OpenEuler中C语言中的函数调用测试(选做)


下一篇:Java总复习(二)——MySQL