前言

结合实验所给的材料规格表,完成一下内容:
1.在Mysql上建好实验用数据库,把材料规格表数据导入;
2.结合教材(Java2实用教程 耿祥义 张跃平)11.9 通用查询章节案例Example11-6,用表格形式显示材料规格表的内容

一、工具/资料

1.材料规格表
2.开发工具:Navicat Premium 15、IDEA
2.章节案例

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); 
      win.add(new JScrollPane(table));
      win.setBounds(12,100,400,200);
      win.setVisible(true); 
      win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
   }
}

import java.sql.*;
public class Query {
   
   String databaseName="";    	//数据库名
   String SQL;        		//SQL语句
   String [] columnName;        //全部字段(列)名
   String [][] record;          //查询到的记录
   public Query() {
   
      try{
     Class.forName("com.mysql.cj.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&serverTimezone=CST&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);
      }
   }    
}

二、操作步骤

1.打开Navicat,新建一张表clggb,开始时参数如下:

2.导入材料规格表中数据到所建表




然后就是一直选择确定即可,导入的结果如下:

代码如下(示例):

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')
import  ssl
ssl._create_default_https_context = ssl._create_unverified_context

3.idea连接数据库

3.1 打开idea新建一个java项目,我这里命名为MysqlTest

3.2 在src处新建一个java class文件,此处命名为Test,然后创建一个与src同级的lib文件夹




在lib中放置放入下载的mysql-connector-java-8.0.28.jar 文件

3.3 导入jar文件

3.3.1

3.3.2

3.3.3

3.3.4

4.修改例子的代码

其中Test的代码为:

import javax.swing.*;

public class Test {
   
    public static void main(String args[]) {
   
        String [] tableHead;
        String [][] content;
        JTable table ;
        JFrame win= new JFrame();
        Query findRecord = new  Query();

        content = findRecord.getRecord();    //返回二维数组,即查询的全部记录
        tableHead=findRecord.getColumnName();  //返回全部字段名称
        table = new JTable(content,tableHead);
        win.add(new JScrollPane(table));
        win.setBounds(12,100,800,200);
        win.setVisible(true);
        win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}

Query的代码为:

import java.sql.*;
public class Query {
   
    String SQL="SELECT * FROM clggb";        		//SQL语句
    String [] columnName;        //全部字段(列)名
    String [][] record;          //查询到的记录


    public Query() {
   
        try{
     Class.forName("com.mysql.cj.jdbc.Driver");//加载JDBC-MySQL驱动
        }
        catch(Exception e){
   }
    }

    public String[] getColumnName() {
   
        if(columnName ==null ){
   
            System.out.println("先查询记录");
            return null;
        }
        return columnName;
    }

    public String[][] getRecord() {
   
        startQuery();
        return record;
    }
    static final String JDBC_DRIVER="com.mysql.cj.jdbc.Driver";
    static final String DB_URL= "jdbc:mysql://localhost:3306/storemanagersystem?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC";//storemanagersystem是我所创建的数据库的名字,在各自使用时要注意使用自己的数据库名

    // 数据库的用户名与密码,需要根据自己的设置
    static final String USER = "root";
    static final String PASS = "11111";

    private void startQuery() {
   
        Connection con;
        Statement sql;
        ResultSet rs;

        try {
   
            con=DriverManager.getConnection(DB_URL,"root","11111");
            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);
        }
    }
}

5.运行结果