为什么无法在表格中显示出数据库中的数据?

zhongzuo 2006-03-07 11:18:22
源代码:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.sql.*;
import javax.swing.table.*;

public class TableTest

{
static{
try{
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
System.out.println("Success loading MS SQL SERVER Driver...");

}
catch(Exception e){
System.out.println("Error loading MS Server Driver...");
e.printStackTrace();

}
}
public static void main(String[] args)
{


JFrame.setDefaultLookAndFeelDecorated(true);
JFrame frame = new TableTestFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.show();

}
}

class TableTestFrame extends JFrame
{
public TableTestFrame()
{
setTitle("商品信息查询窗口");
Toolkit kit = Toolkit.getDefaultToolkit();
Dimension screenSize = kit.getScreenSize();
int screenWidth = screenSize.width;
int screenHeight = screenSize.height;

setLocation(screenWidth/4,screenHeight/10);
setSize(DEFAULT_WIDTH,DEFAUTL_HEIGHT);
try{
dataInit();
}
catch(Exception e)
{
e.printStackTrace();
}
Container contentPane = getContentPane();

JPanel panel = new JPanel();
JLabel label = new JLabel("请输入商品标号:");
JTextField text = new JTextField("",8);
JButton query = new JButton("查询");
JButton exit = new JButton("退出");
exit.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
System.exit(0);
}
});

panel.add(label);
panel.add(text);
panel.add(query);
panel.add(exit);

contentPane.setLayout(new BorderLayout());
contentPane.add(panel,BorderLayout.NORTH);

table = new JTable();
JScrollPane jScrollPanel = new JScrollPane(table);
contentPane.add(jScrollPanel,BorderLayout.CENTER);

}

public static final int DEFAULT_WIDTH = 500;
public static final int DEFAUTL_HEIGHT = 600;
private JTable table;
private DefaultTableModel defaultTableModel1 = new DefaultTableModel();
private void dataInit() throws Exception{

try{
DBConnection DBCon = new
DBConnection("jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=mydb1"
,"sa","sa");

Connection con = DBCon.makeConnection();
Statement stmt1 = con.createStatement();
ResultSet rs1 = stmt1.executeQuery("select * from commodityv_id");
ResultSetMetaData rsmd1 = rs1.getMetaData();
defaultTableModel1.setColumnCount(0);
defaultTableModel1.setRowCount(0);
for(int i =1;i<=rsmd1.getColumnCount();i++){
defaultTableModel1.addColumn(rsmd1.getColumnName(i));
}

int i = 0;
while(rs1.next()){
defaultTableModel1.setNumRows(i+1);
for(int j = 0;j<=rsmd1.getColumnCount();j++){
defaultTableModel1.setValueAt(rs1.getString(j+1),i,j);

}
i++;


}
rs1.close();
table.setModel((TableModel)defaultTableModel1);
}
catch(Exception e){
e.printStackTrace();
}



}




}

class DBConnection {
public String url;
public String username;
public String password;
public DBConnection(){
}
public DBConnection(String url_,String username_,String password_){
url = url_;
username = username_;
password = password_;

}
public Connection makeConnection(){
Connection con = null;
try{
con = DriverManager.getConnection(url,username,password);

}
catch(Exception e){
System.out.println("没有连接上数据库!");

e.printStackTrace();
}
return con;
}

}
运行界面能正常显示,但是无法显示数据库中的数据,终端显示:
Success loading MS SQL SERVER Driver...
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Column index 5
is out of range.
at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source
)
at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
at com.microsoft.jdbc.base.BaseResultSet.validateColumnIndex(Unknown Sou
rce)
at com.microsoft.jdbc.base.BaseResultSet.getString(Unknown Source)
at TableTestFrame.dataInit(TableTest.java:109)
at TableTestFrame.<init>(TableTest.java:49)
at TableTest.main(TableTest.java:28)
请明白人解答 谢谢!
...全文
226 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Parson 2006-03-10
  • 打赏
  • 举报
回复
应该是在这里发生了错误:
for(int j = 0;j<=rsmd1.getColumnCount();j++){
defaultTableModel1.setValueAt(rs1.getString(j+1),i,j);
}

rs1.getString(j+1)越界了。

你的循环语句用的不对,应该为:for(int j = 0;j<rsmd1.getColumnCount();j++)。
zhongzuo 2006-03-07
  • 打赏
  • 举报
回复
其中有些功能没有实现 只是想先试一下能不能从数据库中调出数据,结果。。。

62,629

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧