JAVA-数据库条件查询

实验要求:
编写一个应用程序,连接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);
      }
   }    
}

发布了18 篇原创文章 · 获赞 7 · 访问量 684

猜你喜欢

转载自blog.csdn.net/z_mawkish/article/details/105253631