《连接到数据库的程序的源代码》由会员分享,可在线阅读,更多相关《连接到数据库的程序的源代码(8页珍藏版)》请在金锄头文库上搜索。
1、这个程序是连接到数据库的一个程序,主要功能是在上方的文本输入框中输入查询语句,实现从数据库中查询的功能,还可以在下方的过滤文本框中输入要过滤的文本,实现过滤查询结果的功能。现在的问题是编译能够成功,但是运行时会报错。错误信息及源代码在下面给出,请问原因为何?多谢指教。/这是 ResultSetTableModel 类,用作 JTable 的构造函数的参数。package ResultSetTableModel;import java.sql.*;import javax.swing.table.*;public class ResultSetTableModel extends Abstrac
2、tTableModelprivate Connection connection;private Statement statement;private ResultSet resultset;private ResultSetMetaData metadata;private int numberofrows;private boolean connectedtodatabase=false;public ResultSetTableModel(String url,String username,String password,String query)tryconnection=Driv
3、erManager.getConnection(url,username,password);statement=connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);connectedtodatabase=true;setQuery(query);catch(SQLException sqlexception)System.out.println(error on connecting to database);public void setQuery(String q
4、uery) throws SQLException,IllegalStateExceptionif(!connectedtodatabase)throw new IllegalStateException(Not connected to database);resultset=statement.executeQuery(query);metadata=resultset.getMetaData();public void disconnectFromDatabase()if(connectedtodatabase)tryresultset.close();statement.close()
5、;connection.close();catch(SQLException sqlException)sqlException.printStackTrace();finallyconnectedtodatabase=false;public int getColumnCount() throws IllegalStateExceptionint currentrow=1;if(!connectedtodatabase)throw new IllegalStateException(Not connected to database);tryresultset.last();currentr
6、ow=resultset.getRow();catch(SQLException sqlexception)sqlexception.printStackTrace();return currentrow;public Class getColumnClass(int column) throws IllegalStateExceptionif(!connectedtodatabase)throw new IllegalStateException(Not connected to database);tryString className=metadata.getColumnClassNam
7、e(column+1);return Class.forName(className);catch(Exception exception)exception.printStackTrace();finallyreturn Object.class;public String getColumnName(int column) throws IllegalStateExceptionString columnname=null;if(!connectedtodatabase)throw new IllegalStateException(Not connected to database);t
8、ry columnname=metadata.getColumnName(column+1);catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace();finallyreturn columnname;public int getRowCount() throws IllegalStateExceptionint rowcount=0;if(!connectedtodatabase)throw new IllegalStateException(Not connected to database);t
9、ry resultset.last();rowcount=numberofrows=resultset.getRow();catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace();finallyreturn numberofrows;public String getValueAt(int row,int column) throws IllegalStateExceptionif(!connectedtodatabase)throw new IllegalStateException(Not con
10、nected to database);try resultset.absolute(row+1);return resultset.getObject(column+1).toString();catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace();return ;/这是 QueryData 类,其中实现了图形界面package ResultSetTableModel;import java.awt.*;import javax.swing.*;import java.awt.event.*;im
11、port java.sql.SQLException;import java.util.regex.*;import javax.swing.table.*;public class QueryData extends JFramestatic final String DATABASEURL=jdbc:oracle:thin:localhost:1521:orcl;static final String DATABASEUSERNAME=scott;static final String DATABASEPASSWORD=123456;private JButton submitquery;
12、private Box boxnorth,boxsouth;private JTextArea inquerysentence;private JTextField filtercondition;private JButton applyfilter;private ResultSetTableModel tablemodel;private JTable resulttable;public QueryData()super(Displaying query results);Box boxnorth,boxsouth;JTextArea inquerysentence;JTextFiel
13、d filtercondition;JButton applyfilter;ResultSetTableModel tablemodel=new ResultSetTableModel(DATABASEURL,DATABASEUSERNAME,DATABASEPASSWORD,select * from emp);boxnorth=Box.createHorizontalBox();boxsouth=Box.createHorizontalBox();inquerysentence=new JTextArea(select * from emp,30,100);inquerysentence.
14、setWrapStyleWord(true);inquerysentence.setLineWrap(true);submitquery=new JButton(Submit Query); boxnorth.add(new JScrollPane(inquerysentence);boxnorth.add(submitquery);JTable resulttable=new JTable(tablemodel);JLabel filterflag=new JLabel(Filter);filtercondition=new JTextField();applyfilter=new JBut
15、ton(Apply Filter);boxsouth.add(filterflag);boxsouth.add(filtercondition);boxsouth.add(applyfilter);add(boxnorth,BorderLayout.NORTH);add(new JScrollPane(resulttable),BorderLayout.CENTER);add(boxsouth,BorderLayout.SOUTH);setSize(500,500);setVisible(true);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);submitQuery(inquerysentence.getText();applyFilter(filtercondition.getText();public void submitQuery(final String sentencetoinquery)submitquery.addActionListener(new ActionListener()public void actionPerformed(ActionEvent ac