20165320 第八周课下补做

Posted gst-paul

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了20165320 第八周课下补做相关的知识,希望对你有一定的参考价值。

知识点总结:

一、加载JDBC-数据库驱动。

        try{ Class. forName("com.mysql.jdbc.Driver");
            }
        catch(Exception e){}

二、连接数据库

        Connection con;
        String uri =
        "jdbc:mysql://192.168.100.1:3309/name?user=root&password=&useSSL=true";
        try{
            con = DriverManager.getConnection(uri);
        }
        catch(SQLException e){
            System.out.println(e);
        }
        

三、常规操作

向数据库发送SQL查询语句

try {Statement sql=con.createStatement();
}
catch(SQLException e) {}

处理查询结果,返回一个ResultSet对象

ResultSet rs = sql.executeQuery{"SELCET * FROM student");

关闭链接

con.close();

四、条件与排序查询

一般格式

select 字段 from 表名 where 条件

字段和固定值比较

select name from mess where name = ‘‘

字段在某个区间范围

select * from mess where height>1.60 and height<=1.8

使用某些特殊的日期函数

select * from time_list where second(shijian)=56

用操作符like进行模式匹配

select * from mess where name like ‘%林%‘

排序:用order by子语句对记录进行排序

selct * from mess order by height

运行结果截图

1.技术分享图片

2.技术分享图片

3.技术分享图片

教材代码例子分析

11.1:查询students数据库中mess表的全部记录,总共三条记录

R1001 张三 2000-12-12 178

R1002 李四 1999-10-09 168

R5320 申启 1998-02-03 180

11.2:随机查询students数据库中mess表中的两条记录,首先将光标移到最后一行,然后再获取最后一行的行号,以便获取表中的记录数目

随机数方法:

public static int[] getRandomNumber(int max,int amount) 

返回1~max之间的amount个不同的随机数

11.3:查询表中姓张,身高大于1.65,出生在2000之前,月份在7月之后的学生,并按出生日期排序

三个条件:

1.year(birthday)<=2000 and month(birthday)>7;

2.name Like ‘张_%‘;

3.height >1.65 ;

11.4:向mess表中插入如下两条记录:

R11,将三,2000-10-23

R10,李武,1989-7-22

11.5:使用预处理语句向mess表中添加记录并查询了姓张的记录

PreparedStatement preSql; //预处理语句对象

preSql = con.prepareStatement(sqlStr);//得到预处理对象

11.6:将数据库名以及SQL语句传递给Query类的对象,用表格显示所查到的记录

11.7:使用事务处理,将mess表中number字段是R1001的height的值减少n,并将减少的n增加到字段是R1002的height上

con.commit(); //开始事务处理,如果发生异常直接执行catch块

11.8:使用Derby数据库管理系统创建了名字是students的数据库,并在数据库中建立了成绩表:

张三 90  李斯 88  刘二 67

sta.execute(SQL); //创建表

教材习题:

1. 将select后的where条件改成order by birthday,其它的条件都删掉。

以下代码省略了GetDBCconnecttion类

importjava.sql.*;
public class BianCheng1{
    public static void main(String args[]) {
    Connection con;
    Statement sql;
    ResultSet rs;
    con = GetDBConnection.connectDB("students","root","");
    if(con == null )return;
    String sqlStr="select * frommess orderby 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);
        floatheight=rs.getFloat(4);
         System.out.printf("%s\\t",number);
         System.out.printf("%s\\t",name);
         System.out.printf("%s\\t",date);
        System.out.printf("%.2f\\n",height);
    }
    con.close();

    }
    catch(SQLException e) {
    System.out.println(e);
    }
 }

}

2.这个题目不会做,百度了一下代码

同样省略了Query

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);
}
}

以上是关于20165320 第八周课下补做的主要内容,如果未能解决你的问题,请参考以下文章

20165324 第十周课下补做

20165308 2017-2018-2 第十周课下补做

第十周课下补做

20165235 第十周课下补做

第十周课下补做

20165206 第十周课下补做