zoukankan      html  css  js  c++  java
  • 20165328课上补做

    一、相关知识点总结:

    • 顺序查询:即指ResultSrt对象一次只能看到一个数据行,使用next()方法移到下一个数据行,next()方法最初的查询位置,即游标位置,位于第一行前面。next()方法向下移动游标,移动成功返回ture,否则返回false。
    • 条件与排序查询:
    • 一般格式:
    • select 字段 form 表名 while 条件

      (1)字段值和固定值比较,例如:

    • selet name,height form mess where name=“李四”

      (2)字段值在某个区间范围,例如:

    • select * form mess where height>1.60 and height<=1.8
      select * form mess where mess>1.7 and name !=“张山”

      (3)使用某些特殊的日期函数,如year、month、day:

    • select * form mess where year(birthday)<1980 and month(birthday)<=10
      select * form mess where year(birthday) between 1983 and 1986

    二、课上作业补做截图:

    三、第十一章代码分析:

    •  example11_1
    • import java.sql.*; 
      public class Example11_1 {
         public static void main(String args[]) {
            Connection con=null;
            //初始化
            Statement sql; 
            ResultSet rs;     
            //顺序查询,始终保持和数据库的连接,直到将对象中的数据查看完毕
            try{  Class.forName("com.mysql.jdbc.Driver"); //加载JDBC_MySQL驱动
            }
            catch(Exception e){}
            String uri = "jdbc:mysql://localhost:3306/students?useSSL=true";
            String user ="root";
            String password ="";
            try{  
               con = DriverManager.getConnection(uri,user,password); //连接代码
            }
            catch(SQLException e){ }
            try { 
                sql=con.createStatement();
                rs=sql.executeQuery("SELECT * FROM mess"); //查询mess表
                while(rs.next()) {   //读取数据
                   String number=rs.getString(1);
                   String name=rs.getString(2);
                   Date date=rs.getDate(3);
                   float height=rs.getFloat(4);
                   System.out.printf("%s	",number);
                   System.out.printf("%s	",name);
                   System.out.printf("%s	",date); 
                   System.out.printf("%.2f
      ",height);        
                }
                con.close();
            }
            catch(SQLException e) { 
               System.out.println(e);
            }
        }
      }

       该代码作用为查询student数据库中mess表的全部记录。

    • example11_2:
    • import java.sql.*; 
      public class Example11_2 {
         public static void main(String args[]) {
            Connection con;
            Statement sql; 
            ResultSet rs;
            con = GetDBConnection.connectDB("students","root","");   //连接数据库
            if(con == null ) return;
            //若数据为空
            try { 
                sql=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
                                          ResultSet.CONCUR_READ_ONLY);  //为得到一个可滚动的结果集
                rs = sql.executeQuery("SELECT * FROM mess ");
                //根据参数ResultSet.TYPE_SCROLL_SENSITIVE和ResultSet.CONCUR_READ_ONLY的情况,sql返回相应类型的结果集
                rs.last();
                int max = rs.getRow();
                System.out.println("表共有"+max+"条记录,随机抽取2条记录:");
                int [] a =GetRandomNumber.getRandomNumber(max,2);//得到1-max之间2个不同随机数
                for(int i:a){
                   rs.absolute(i);//油标移动到第i行
                   String number = rs.getString(1);
                   String name = rs.getString(2);
                   Date date = rs.getDate(3);
                   float h = rs.getFloat(4);
                   System.out.printf("%s	",number);
                   System.out.printf("%s	",name);
                   System.out.printf("%s	",date); 
                   System.out.printf("%.2f
      ",h);
                }
                con.close();
            }
            catch(SQLException e) { 
               System.out.println(e);
            }
        }
      }

       该代码是将数据库连接的代码单独封装到一个GetDatebaseConnection类中,随机查询student数据库中mess表的两条记录

    • example11_3:
    • import java.sql.*; 
      public class Example11_3 {
         public static void main(String args[]) {
            Connection con;
            Statement sql; 
            ResultSet rs;
            con = GetDBConnection.connectDB("students","root","");//连接数据库
            if(con == null ) return;
            //若数据为空
            String c1=" year(birthday)<=2000 and month(birthday)>7";
            //条件1:若出生的年份在2000年或者2000年之前,月份在7月之后
            String c2=" name Like '张_%'";
            //条件2:学生姓张
            String c3=" height >1.65";
            //条件3:身高大于1.65
            String sqlStr =
            "select * from mess where "+c1+" and "+c2+" and "+c3+"order by birthday";
            //通过where查找和通过order by排序
            try { 
                sql=con.createStatement();
                rs = sql.executeQuery(sqlStr);
                while(rs.next()) { 
                   String number=rs.getString(1);
                   String name=rs.getString(2);
                   Date date=rs.getDate(3);
                   float height=rs.getFloat(4);
                   System.out.printf("%s	",number);
                   System.out.printf("%s	",name);
                   System.out.printf("%s	",date); 
                   System.out.printf("%.2f
      ",height);
                }
                con.close();
            }
            catch(SQLException e) { 
               System.out.println(e);
            }
        }
      }

       该代码的作用是查询mess表中姓张,身高大于1.65,出生年份在2000年或2001以前,月份在7月之后的学生,并按出生日期排序。

    • example11_4:
    • import java.sql.*; 
      public class Example11_4 {
         public static void main(String args[]) {
            Connection con;
            Statement sql; 
            ResultSet rs;
            con = GetDBConnection.connectDB("students","root","");   //连接数据库
            if(con == null ) return;
            String jiLu="('R11q','王三','2000-10-23',1.66),"+
                        "('R10q','李武','1989-10-23',1.76)";    //插入的2条记录
            String sqlStr ="insert into mess values"+jiLu;
            //通过insert into mess values语句进行插入记录
            try { 
                sql=con.createStatement(); 
                int ok = sql.executeUpdate(sqlStr);
                rs = sql.executeQuery("select * from mess");
                while(rs.next()) { 
                   String number=rs.getString(1);
                   String name=rs.getString(2);
                   Date date=rs.getDate(3);
                   float height=rs.getFloat(4);
                   System.out.printf("%s	",number);
                   System.out.printf("%s	",name);
                   System.out.printf("%s	",date); 
                   System.out.printf("%.2f
      ",height);
                }
                con.close();
            }
            catch(SQLException e) { 
               System.out.println("记录中number值不能重复"+e);
            }
        }
      }

       该代码是向mess插入两条记录。

    • example11_5:
    • import java.sql.*; 
      public class Example11_5 {
         public static void main(String args[]) {
            Connection con;
            PreparedStatement preSql;  //预处理语句对象preSql
            ResultSet rs;
            con = GetDBConnection.connectDB("students","root","");  //连接数据库
            if(con == null ) return;
            String sqlStr ="insert into mess values(?,?,?,?)";
            //在对SQL进行预处理时可以使用通配符?来代替字段的值
            try { 
                preSql = con.prepareStatement(sqlStr);//得到预处理语句对象preSql
                preSql.setString(1,"A001");       //设置第1个?代表的值
                preSql.setString(2,"刘伟");       //设置第2个?代表的值
                preSql.setString(3,"1999-9-10"); //设置第3个?代表的值
                preSql.setFloat(4,1.77f);        //设置第4个?代表的值   
                int ok = preSql.executeUpdate();
                sqlStr="select * from mess where name like ? ";
                preSql = con.prepareStatement(sqlStr);//得到预处理语句对象preSql
                preSql.setString(1,"张%");       //设置第1个?代表的值
                rs = preSql.executeQuery();
                while(rs.next()) { 
                   String number=rs.getString(1);
                   String name=rs.getString(2);
                   Date date=rs.getDate(3);
                   float height=rs.getFloat(4);
                   System.out.printf("%s	",number);
                   System.out.printf("%s	",name);
                   System.out.printf("%s	",date); 
                   System.out.printf("%.2f
      ",height);
                }
                con.close();
            }
            catch(SQLException e) { 
               System.out.println("记录中number值不能重复"+e);
            }
        }
      }

       该代码是使用预处理语句向mess表添加记录并查询了姓张的记录。

    • example11_6:
    • import javax.swing.*;
      public class Example11_6 {
         public static void main(String args[]) {
            String [] tableHead;
            String [][] content; 
            JTable table ;//定义表格
            JFrame win= new JFrame();
            Query findRecord = new  Query();
            findRecord.setDatabaseName("students");
            findRecord.setSQL("select * from mess");
            content = findRecord.getRecord();
            //返回二维数组,即查询的全部记录
            tableHead=findRecord.getColumnName();
            //返回全部字段名
            table = new JTable(content,tableHead); 
            //表格JTable
            win.add(new JScrollPane(table));
            win.setBounds(12,100,400,200);
            win.setVisible(true); 
            win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
         }
      }

       该代码将数据库名以及SQL语句传递给Query类的对象。

    • example11_7:
    • import java.sql.*; 
      public class Example11_7{
          public static void main(String args[]){
             Connection con = null;
             //初始化
             Statement sql;
             ResultSet rs; 
             String sqlStr;
             con = GetDBConnection.connectDB("students","root","");  //连接数据库
             if(con == null ) return;
             try{ float n = 0.02f;
                  con.setAutoCommit(false);       //关闭自动提交模式
                  sql = con.createStatement();
                  sqlStr = "select name,height from mess where number='R1001'";
                  rs = sql.executeQuery(sqlStr);
                  rs.next();
                  float h1 = rs.getFloat(2);
                  System.out.println("事务之前"+rs.getString(1)+"身高:"+h1);
                  sqlStr = "select name,height from mess where number='R1002'"; 
                  rs = sql.executeQuery(sqlStr);
                  rs.next();
                  float h2 = rs.getFloat(2);
                  System.out.println("事务之前"+rs.getString(1)+"身高:"+h2);  
                  h1 = h1-n;  //R1001的height的值减少n
                  h2 = h2+n;  //将减少的n增加到字段是R1002的height上
                  sqlStr = "update mess set height ="+h1+" where number='R1001'";
                  sql.executeUpdate(sqlStr);
                  sqlStr = "update mess set height ="+h2+" where number='R1002'";
                  sql.executeUpdate(sqlStr);
                  //更新数据
                  con.commit(); //开始事务处理,如果发生异常直接执行catch块
                  con.setAutoCommit(true); //恢复自动提交模式
                  String s = "select name,height from mess"+
                            " where number='R1001'or number='R1002'";
                  rs = 
                  sql.executeQuery(s);
                  while(rs.next()){
                     System.out.println("事务后"+rs.getString(1)+
                                        "身高:"+rs.getFloat(2));  
                  }
                  con.close();
               }
               catch(SQLException e){
                  try{ con.rollback();          //撤销事务所做的操作
                  }
                  catch(SQLException exp){}
               }
          }
      }

       该代码使用了事务处理,将mess中number字段是R1001的height的值减少n,并将减少的n增加到字段是R1002的height上

    • example10_8:
    • import java.sql.*;
      public class Example11_8 {
         public static void main(String[] args) {
            Connection con =null;
            Statement sta = null;
            //初始化
            ResultSet rs;
            String SQL;
            try { 
              Class.forName("org.apache.derby.jdbc.EmbeddedDriver");//加载驱动
            }
            catch(Exception e) {
              System.out.println(e);  
              return;
            }
            try { 
               String uri ="jdbc:derby:students;create=true";
               con=DriverManager.getConnection(uri);  //连接数据库
               sta = con.createStatement();
            }
            catch(Exception e) {
              System.out.println(e);  
              return;
            }
            try { SQL = "create table chengji(name varchar(40),score float)";
                  sta.execute(SQL);//创建表
            }
            catch(SQLException e) { 
               //System.out.println("该表已经存在"); 
            }
            SQL ="insert into chengji values"+
                  "('张三', 90),('李斯', 88),('刘二', 67)";
                  //向表中添加三条新的记录
            try {
               sta.execute(SQL);
               rs = sta.executeQuery("select * from chengji "); // 查询表中的记录
               while(rs.next()) {
                  String name=rs.getString(1);
                  System.out.print(name+"	");
                  float score=rs.getFloat(2);
                  System.out.println(score);
               }
               con.close();
            } 
            catch(SQLException e) {
                System.out.println(e);  
            }
        }
      }

       该代码使用了Derby数据库管理系统创建了名字是student的数据库,并在数据库中建立chengji表。

  • 相关阅读:
    【西北师大-18软工】第七次作业成绩汇总
    【西北师大-18软工】第六次作业成绩汇总
    【西北师大-18软工】第五次作业成绩汇总
    【西北师大-18软工】第四次作业成绩汇总
    使用jQuery刷新页面
    jquery怎么判断浏览器是否是ie
    JavaScript如何生成随机字母数字字符串
    js如何引入css文件
    提高网站加载速度的提示和小技巧
    JavaScript 9 个功能强大的技巧
  • 原文地址:https://www.cnblogs.com/dky20165328/p/8909180.html
Copyright © 2011-2022 走看看