连接到数据库的程序的源代码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
这个程序是连接到数据库的一个程序,主要功能是在上方的文本输入框中输入查询语句,实现从数据库中查询的功能,还可以在下方的过滤文本框中输入要过滤的文本,实现过滤查询结果的功能。
现在的问题是编译能够成功,但是运行时会报错。错误信息及源代码在下面给出,请问原因为何?多谢指教。
//这是ResultSetTableModel类,用作JTable的构造函数的参数。
package ResultSetTableModel;
import java.sql.*;
import javax.swing.table.*;
public class ResultSetTableModel extends AbstractTableModel
{
private 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) {
try
{
connection=DriverManager.getConnection(url,username,password);
statement=connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet .CONCUR_READ_ONL Y);
connectedtodatabase=true;
setQuery(query);
}
catch(SQLException sqlexception)
{
System.out.println("error on connecting to database");
}
}
public void setQuery(String query) throws SQLException,IllegalStateException {
if(!connectedtodatabase)
{
throw new IllegalStateException("Not connected to database");
}
resultset=statement.executeQuery(query);
metadata=resultset.getMetaData();
}
public void disconnectFromDatabase()
{
if(connectedtodatabase)
{
try
{
resultset.close();
statement.close();
connection.close();
}
catch(SQLException sqlException)
{
sqlException.printStackTrace();
}
finally
{
connectedtodatabase=false;
}
}
}
public int getColumnCount() throws IllegalStateException
{
int currentrow=1;
if(!connectedtodatabase)
{
throw new IllegalStateException("Not connected to database");
}
try
{
st();
currentrow=resultset.getRow();
}
catch(SQLException sqlexception)
{
sqlexception.printStackTrace();
}
return currentrow;
}
public Class getColumnClass(int column) throws IllegalStateException {
if(!connectedtodatabase)
{
throw new IllegalStateException("Not connected to database");
}
try
{
String className=metadata.getColumnClassName(column+1);
return Class.forName(className);
}
catch(Exception exception)
{
exception.printStackTrace();
}
finally
{
return Object.class;
}
}
public String getColumnName(int column) throws IllegalStateException {
String columnname="null";
if(!connectedtodatabase)
{
throw new IllegalStateException("Not connected to database");
}
try
{
columnname=metadata.getColumnName(column+1);
}
catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally
{
return columnname;
}
}