zoukankan      html  css  js  c++  java
  • 20165212第八周课上测试补做

    20165212第八周补做

    相关知识点

    JDBC

    • 加载JDBC桥连接
      • Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    • 建立和dataSource数据源的链接
      • Connection con=DriverManager.getConnection("jdbc:odbc:dataSource","loginName","password");
    • 得到statement语句
      • Statement sql=con.creatStatement();
    • 向数据源发送SQL语句,必要时返回resultset对象
      • ResultSet rs=sql.executeQuery

    查询操作

    • where子语句
      • slect 字段 from 表明 where 条件 例如:select * from country where population>15000

    课上测试的几个提交点都是以上述语句为核心,Example11_3为模板

    补做内容截图

    (数据库导入图片已经提交。。就没再放那个图)

    教材码分析(因为我认为课后编程题基本涵盖了例题的知识点,所以只写了每一题例题是用来干嘛的,而且,书上也有重要语句的解释)

    • Example11_1 :顺序查询
    • Example11_2 :控制游标查询
    • Example11_3 :条件查询
    • Example11_4 :更、添、删操作
    • Example11_5 :预处理、通配符使用
    • Example11_6 :通用查询(也是作业编程题里用的)
    • Example11_7 :JDBc事务处理
    • Exmaple11_8 :Apache里的derby数据库

    第十一章编程题目

    第一题

    import java.sql.*;
    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;
    String sqlStr="select * from mess order by birthday";
      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.printlf("%s	",number);
        System.out.printlf("%s	",name);
         System.out.printlf("%s	",date);
          System.out.printlf("%.2f
    ",height);
      }
          con.close();
    }
     catch(SQLException e) {
     System.out.println(e);
    }
     }
      }

    GetDBConnection 类

    import java.sql.*; 
    public class GetDBConnection {
     public static Connection connectDB(String DBName,String id,String p) {
      Connection con = null;
      String 
      uri = "jdbc:mysql://localhost:3306/"+DBName+"?useSSL=true&characterEncoding=utf-8";
      try{  Class.forName("com.mysql.jdbc.Driver");//加载JDBC-MySQL驱动
      }
      catch(Exception e){}
      try{  
         con = DriverManager.getConnection(uri,id,p); //连接代码
      }
      catch(SQLException e){}
      return con;
     }
    }

    第二题

    import javax.swing.*;
    public class BianCheng2 {
     public static void main(String args[]) {
      String [] tableHead;
      String [][] content;
      JTable table;
      JFrame win= new JFrame();
     Query findRecord=new Query;
       findRecord.setDatabaseName(args[0]);
       findRecord.setSQL("select * from "+args[1]);
       content = findRecord.getRecord();
      tableHead=findRecord.getColumnName();
    table = new JTable(content,tableHead);
     win.add(new JScrollPane(table));
      win.setBounds(12,100,400,200);
      win.setVisible(true);
     win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    }

    Query类

    import java.sql.*;
    public class Query {
     String databaseName="";        //数据库名
     String SQL;                //SQL语句
     String [] columnName;        //全部字段(列)名
     String [][] record;          //查询到的记录
     public Query() {
      try{  Class.forName("com.mysql.jdbc.Driver");//加载JDBC-MySQL驱动
      }
      catch(Exception e){}
     }
     public void setDatabaseName(String s) {
      databaseName=s.trim();
     }
     public void setSQL(String SQL) {
      this.SQL=SQL.trim();
     }
     public String[] getColumnName() {
       if(columnName ==null ){
           System.out.println("先查询记录");
           return null;
       }
       return columnName;
     }
     public String[][] getRecord() {
       startQuery();
       return record;
     }
     private void startQuery() { 
      Connection con;
      Statement sql;  
      ResultSet rs;
      String uri = 
     "jdbc:mysql://localhost:3306/"+
      databaseName+"?useSSL=true&characterEncoding=utf-8";
      try { 
        con=DriverManager.getConnection(uri,"root","");
        sql=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
                                ResultSet.CONCUR_READ_ONLY);
        rs=sql.executeQuery(SQL);
        ResultSetMetaData metaData = rs.getMetaData();
        int columnCount = metaData.getColumnCount();//字段数目 
        columnName=new String[columnCount]; 
        for(int i=1;i<=columnCount;i++){
            columnName[i-1]=metaData.getColumnName(i);
        } 
        rs.last(); 
        int recordAmount =rs.getRow();  //结果集中的记录数目
        record = new String[recordAmount][columnCount];
        int i=0;
        rs.beforeFirst();
        while(rs.next()) { 
          for(int j=1;j<=columnCount;j++){
             record[i][j-1]=rs.getString(j); //第i条记录,放入二维数组的第i行
          }
          i++;
        }
        con.close();
      }
      catch(SQLException e) {
        System.out.println("请输入正确的表名"+e);
      }
      }    
    }

    遇到的问题:

    编程题第二题提示:

    Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0,怎么调试都无法编译

    解决:一个字母一个字母,一句一句扣几遍,逻辑、顺序上都没什么问题,,才想到是要带命令行参数并运行...然后在这里操作一下子就ok了

  • 相关阅读:
    SpringMVC快速使用——基于注解
    SpringMVC快速使用——基于XML配置和Servlet3.0
    Logback
    软件设计原则
    常用软件官方网站和下载地址记录
    刚刚开通的博客
    Layui 上传附件前条件判断
    js 重置input内容的两种情况
    Java 集合与数组相互转换
    使用Freemarker输出word文档到浏览器与本地
  • 原文地址:https://www.cnblogs.com/FenixRen/p/8909137.html
Copyright © 2011-2022 走看看