⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dbqueryframe.java

📁 《Java实例入门》所有实例的源代码。所有的源文件都是.java文件
💻 JAVA
字号:
package test;import java.net.URL;import java.sql.*;import java.util.Vector;import java.awt.*;import java.awt.event.*;public class dbQueryFrame extends Frame   implements ActionListener, ItemListener{   Database db;   List Tables, Columns, SelColumns;   Choice fields,oper, values;   TextArea where;   Button addAnd,addOr,clear,Search, Quit;   public dbQueryFrame()   {      super("数据库查询构建器");      //设置交互界面      setGUI();      db = new Database("sun.jdbc.odbc.JdbcOdbcDriver");      db.Open("jdbc:odbc:JDBCTEST;pwd=java", "C:\\My Documents\\biblio.mdb");      String tnames[] = db.getTableNames();      loadList(Tables, tnames);      String queryText ="";      where.setText(queryText);    }   //------------------------------------   private void setGUI()   {      setBackground(Color.lightGray);      //界面总体分上中下三部分      setLayout(new GridLayout(3,1));      //上部的构件组织      Panel pn = new Panel();      add(pn);      pn.setLayout(new BorderLayout());         //添加列表框的标题         Panel pnn=new Panel();         pnn.setLayout(new GridLayout(1,3));         pnn.add(new Label("所有表"));         pnn.add(new Label("可选字段"));         pnn.add(new Label("已选字段"));      pn.add("North",pnn);         //添加列表框         Panel pnc=new Panel();         pnc.setLayout(new GridLayout(1,3));         pnc.add(Tables = new List(15));         pnc.add(Columns = new List(15));         pnc.add(SelColumns= new List(15));      pn.add("Center",pnc);      //中部的构件组织      Panel pc = new Panel();      add( pc);      pc.setLayout(new GridLayout(3,1));         //添加下拉列表框的标题         Panel pcn=new Panel();         pcn.setLayout(new GridLayout(1,3));         pcn.add(new Label("字段"));         pcn.add(new Label("运算符"));         pcn.add(new Label("值"));      pc.add(pcn);         //添加下拉列表框         Panel pcc=new Panel();         pcc.setLayout(new GridLayout(1,3));         pcc.add(fields = new Choice());         pcc.add(oper= new Choice());         pcc.add(values= new Choice());      pc.add(pcc);         //添加两个条件生成按钮         Panel pcs=new Panel();         pcs.add(addAnd=new Button("与"));         pcs.add(addOr=new Button("或"));         pcs.add(clear=new Button("清除"));      pc.add(pcs);      Tables.addItemListener(this);      Columns.addActionListener(this);      SelColumns.addActionListener(this);      fields.addItemListener(this);      addAnd.addActionListener(this);      addOr.addActionListener(this);      clear.addActionListener(this);      oper.add("=");      oper.add(">");      oper.add("<");      //下部的构件组织      Panel ps = new Panel();      add(ps);      ps.add(where = new TextArea("", 3,40));      addPanel(ps, Search = new Button("执行查询"));      addPanel(ps, Quit = new Button("退出"));      Search.addActionListener(this);      Quit.addActionListener(this);      setBounds(100, 100, 500, 300);      setVisible(true);   }   //------------------------------------   private void addPanel(Panel ps, Component c)   {      Panel p = new Panel();      ps.add(p);      p.add(c);   }   //------------------------------------   private void loadChoice(Choice choice, String[] s){      choice.removeAll();      for (int i=0; i< s.length; i++)          choice.add(s[i]);   }   //------------------------------------   private void loadList(List list, String[] s)   {    list.removeAll();    for (int i=0; i< s.length; i++)         list.add(s[i]);   }   //------------------------------------   public void actionPerformed(ActionEvent e)   {       Object obj = e.getSource();      if (obj== Columns) {          if( Columns.getSelectedIndex() ==0){                SelColumns.removeAll();                SelColumns.add("*");                Columns.removeAll();           }else{                SelColumns.add(Columns.getSelectedItem());                Columns.remove(Columns.getSelectedIndex());           }      }      if (obj== SelColumns) {          if( SelColumns.getSelectedItem() .trim() =="*"){                SelColumns.removeAll();                Columns.removeAll();                String cnames[] = db.getColumnNames(Tables.getSelectedItem());                loadList(Columns, cnames);                Columns.add("*",0) ;           }else{                Columns.add(SelColumns.getSelectedItem());                SelColumns.remove(SelColumns.getSelectedIndex());           }      }      if(obj==addAnd){            String strwhere=fields.getSelectedItem().trim()+oper.getSelectedItem()+"'"+values.getSelectedItem().trim()+"'";           if(where.getText().trim() .length() ==0)                where.setText(strwhere);           else               where.setText(where.getText().trim()+" and "+strwhere);      }      if(obj==addOr){            String strwhere=fields.getSelectedItem().trim()+oper.getSelectedItem()+"'"+values.getSelectedItem().trim()+"'";           if(where.getText().trim() .length() ==0)                where.setText(strwhere);           else               where.setText(where.getText().trim()+" or "+strwhere);      }      if(obj==clear)          where.setText("");      if (obj == Quit)         System.exit(0);      if (obj == Search)         clickedSearch();      if (obj == clear)         where.setText("");   }   //------------------------------------   public void itemStateChanged(ItemEvent e)   {      Object obj = e.getSource();      if (obj == Tables){         showColumns();         Columns.add("*",0);      }      if (obj == fields)         showData();   }   //------------------------------------   private void showColumns()   {      String cnames[] = db.getColumnNames(Tables.getSelectedItem());      loadList(Columns, cnames);      loadChoice(fields,cnames);   }   //------------------------------------   private void showData()   {      String colname = fields.getSelectedItem();      String colval = db.getColumnValue(Tables.getSelectedItem(), colname);      values.setVisible(false);      values.removeAll();      values.setVisible(true);      colval = db.getNextValue(fields.getSelectedItem());      while (colval.length()>0)         {         values.add(colval);         colval = db.getNextValue(fields.getSelectedItem());         }   }   //------------------------------------   private void clickedSearch()   {      String sql;      sql="select ";     for(int i=0;i<SelColumns.getItemCount() ;i++)           sql=sql+SelColumns.getItem(i).trim()+",";      sql=sql.substring(0,sql.length()-1);      sql=sql+" from "+Tables.getSelectedItem().trim();      sql=sql+" where "+where.getText().trim();      resultSet rs = db.Execute(sql);      queryDialog q = new queryDialog(this, rs);      q.show();   }   //------------------------------------   static public void main(String argv[])   {      new dbQueryFrame();   }}//=====================================================class queryDialog extends Dialog   implements ActionListener{   resultSet results;   Button OK;   textPanel pc;   Vector tables;   public queryDialog(Frame f, resultSet r)   {   super(f, "查询结果");   results = r;   setLayout(new BorderLayout());   OK = new Button("OK");   Panel p = new Panel();   add("South", p);   p.add(OK);   OK.addActionListener(this);   pc = new textPanel();   pc.setBackground(Color.white);   add("Center", pc);   makeTables();   setBounds(100, 100, 500, 300);   setVisible(true);   repaint();   }   //-------------------------------------   private void makeTables()   {      tables = new Vector();      String t[] = results.getMetaData();      tables.addElement( t);      while (results.hasMoreElements())         {         tables.addElement(results.nextElement());         }   }      //-------------------------------------   public void actionPerformed(ActionEvent e)   {      setVisible(false);   }   //-------------------------------------   class textPanel extends Panel      {      public void paint(Graphics g)      {     String s[]; 	int x=0;	//计算字体的高度 	int y =g.getFontMetrics().getHeight();	//估算列的高度 	int deltaX = (int)1.5f*(g.getFontMetrics().stringWidth("wwwwwwwwwwwwww"));	//遍历表矢量 	for (int i=0; i< tables.size(); i++)   	{   		s  = (String[])tables.elementAt(i);        //绘制字符串数组中的每一行   		for (int j =0; j< s.length; j++)    	{    		String st= s[j];    		g.drawString(st, x, y);    		x += deltaX;           	//移到下一列    	}   		x = 0;                 		//开始一个新行   		y += g.getFontMetrics().getHeight();        //列标签与列数据之间的额外空间   		if (i == 0)   			y += g.getFontMetrics().getHeight();   	}        }   }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -