欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JAVA-数据库条件查询

程序员文章站 2022-05-09 19:07:57
...

实验要求:
编写一个应用程序,连接SQL Server数据库Stu,并访问数据库中grade表,并可以通过课程号下拉表列选择课程号,并将表中的内容输出在窗口界面的表格中 。

如下图所示:
JAVA-数据库条件查询
JAVA-数据库条件查询
JAVA-数据库条件查询
JAVA-数据库条件查询

代码:

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