文章目录
前言
结合实验所给的材料规格表,完成一下内容: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);
}
}
}