JAVA-数据库条件查询
程序员文章站
2022-05-09 19:07:57
...
实验要求:
编写一个应用程序,连接SQL Server数据库Stu,并访问数据库中grade表,并可以通过课程号下拉表列选择课程号,并将表中的内容输出在窗口界面的表格中 。
如下图所示:
代码:
import java.awt.BorderLayout;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.RowFilter;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableRowSorter;
public class test {
public static void main(String args[]){
String [] tableHead;
String [][] content;
JTable table ;
JComboBox jc;
jc=new JComboBox();
jc.addItem("all");
jc.addItem("001");
jc.addItem("002");
jc.addItem("003");
Query findRecord;
JFrame win = new JFrame();
findRecord = new Query();
findRecord.setDatabaseName("数据库");#这里填写自己所建立的数据库名字
findRecord.setSQL("select * from grade ");
content = findRecord.getRecord();
tableHead=findRecord.getColumnName();
table = new JTable(content,tableHead);
DefaultTableModel tableModel = new DefaultTableModel(content,tableHead);
table.setModel(tableModel);
TableRowSorter sorter = new TableRowSorter(tableModel);
table.setRowSorter(sorter);
jc.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
String choose = jc.getSelectedItem().toString();
if(choose=="all") {
sorter.setRowFilter(RowFilter.regexFilter("."));
}
else if(choose=="001") {
sorter.setRowFilter(RowFilter.regexFilter("001"));
}
else if(choose=="002") {
sorter.setRowFilter(RowFilter.regexFilter("002"));
}
else if(choose=="003") {
sorter.setRowFilter(RowFilter.regexFilter("003"));
}
}
});
win.add(jc,BorderLayout.NORTH);
win.add(new JScrollPane(table),BorderLayout.CENTER);
win.setVisible(true);
win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
win.setBounds(0,0,600,400);
win.setTitle("数据库查询");
}
}
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:sqlserver://localhost:1433;DatabaseName=数据库";
try {
con=DriverManager.getConnection(uri,"sa","123456");
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);
}
}
}
推荐阅读
-
asp.net实现的MVC跨数据库多表联合动态条件查询功能示例
-
java封装前端查询条件通用版
-
在oracle 数据库查询的select 查询字段中关联其他表的方法
-
Oracle 数据库连接查询SQL语句
-
深入SQL Server 跨数据库查询的详解
-
序列化表单为json对象,datagrid带额外参提交一次查询 后台用Spring data JPA 实现带条件的分页查询 多表关联查询
-
利用Django框架中select_related和prefetch_related函数对数据库查询优化
-
用实例详解Python中的Django框架中prefetch_related()函数对数据库查询的优化
-
Oracle数据库之七 多表查询
-
用easyui实现查询条件的后端传递并自动刷新表格的两种方法