这个是Connection类
import java.sql.*;
public class MyCon
{
Connection con;
Statement st;
ResultSet rs;
//关闭连接方法
public void close_db()
{
try {
rs.close();
st.close();
con.close();
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
public void myConnection()
{
try
{
//载入驱动
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
//建立连接
con = DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;database=pubs","sa","majkandy");
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
//查询语句方法
public ResultSet SQLSelect(String sql)
{
try
{
st = con.createStatement();
rs = st.executeQuery(sql);
}
catch (SQLException ex)
{
ex.printStackTrace();
}
return rs;//返回ResultSet
}
}
这个是返回DefaultTableModel类
import javax.swing.*;
import javax.swing.table.*;
import java.util.Vector;
import java.sql.*;
public class MyTable
{
ResultSet rs;
ResultSetMetaData rsmd;
DefaultTableModel myDefaultTableModel;
Vector vRow = new Vector();
Vector vCol = new Vector();
MyCon mycon = new MyCon();
public DefaultTableModel myModel(String sql) {
myDefaultTableModel = new DefaultTableModel();
try {
mycon.myConnection();
//执行SQL查询语句
rs = mycon.SQLSelect(sql);
//定义列名
rsmd = rs.getMetaData();
//获得结果集的列数
int col = rsmd.getColumnCount();
for (int i = 1; i <= col; i++) {
//添加结果的列名
vCol.addElement(rsmd.getColumnLabel(i));
//添加Model的列
myDefaultTableModel.addColumn(vCol.get(i - 1));
}
while (rs.next()) {
vRow = new Vector();
for (int i = 1; i <= col; i++) {
vRow.addElement(rs.getString(i));
}
//添加Model的行
myDefaultTableModel.addRow(vRow);
}
}
catch (Exception ex) {
ex.printStackTrace();
}
mycon.close_db();
return myDefaultTableModel; //返回Model
}
}
我在另一个类里面,有输入框,输入SQL的表名,连续查几次之后,得到的JTable列名,总是第一次查询的那个列名,为什么?
高手们帮帮我解决一下