怎么把数据库表的内容传入JTable

albertwmm 2012-11-14 09:48:33
数据库中写了张表 姓名,学号,班级,性别,地址

然后想把这表的内容传入JTable , 并且想对学生中的某个人点击 弹出一个专门的JFrame 来显示这个学生的其他信息。

下面是我写的。。 为什么打开来是空白呢 = =
还有如何设置这个学生列的监听呢


public class XSTable extends JFrame{

/**
*
*/
private static final long serialVersionUID = 4681526555438628510L;

public static void main(String[] args) {

new XSTable();
}


Connection conn = null ;
Statement st = null ;
ResultSet rs = null;

public XSTable(){

JTable table=new JTable();

DefaultTableModel model = (DefaultTableModel)table.getModel();

final String[][] data={ };

try {
conn =JdbcUtils.getConnection(); //我写了工具类,注册链接释放的代码
st = conn.createStatement();
rs = st.executeQuery("select*from CanKao_table");

while(rs.next()){

sop.Sop("连接成功"); //工具类中的输出控制台

for(int i=1;i<=model.getRowCount();i++){
data[0][1] = "姓名";
data[0][2] = "学号";
data[0][3] = "性别";
data[0][4] = "班级";
data[0][5] = "地址";
data[i][1] = rs.getString(1).trim();
data[i][2] = rs.getString(2).trim();
data[i][3] = rs.getString(3).trim();
data[i][4] = rs.getString(4).trim();
data[i][5] = rs.getString(5).trim();

sop.Sop("连接成功");
}
}
}
catch (Exception e) {
e.printStackTrace();
}
finally{
JdbcUtils.free(rs, st, conn);
}

table.setModel(model);

table.setPreferredScrollableViewportSize(new Dimension(500,500));

JScrollPane scrollPane=new JScrollPane(table);
this.getContentPane().add(scrollPane,BorderLayout.CENTER);

this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});

this.pack();
this.setVisible(true);
}

}






各位前辈帮看看阿
...全文
473 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
失落夏天 2012-11-18
  • 打赏
  • 举报
回复
 public static void main(String[] args) throws Exception{         new XWTable();     }
改成 public static void main(String[] args){ try { new XWTable(); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } 然后你看看报的是什么异常,把那个异常和行号发上来。
albertwmm 2012-11-15
  • 打赏
  • 举报
回复
引用 10 楼 AA5279AA 的回复:
你这不是空指针异常嘛,估计是你哪个变量忘了初始化了。报异常的时候你至少得看看哪一行报错,这样才好找错误点啊。你找到那一行,把每一个元素都system.out.println();一下,就知道哪个为空。
还有91行
return data.length;
这行时有时没得 = = 这是为什么啊
albertwmm 2012-11-15
  • 打赏
  • 举报
回复
引用 10 楼 AA5279AA 的回复:
以后如果代码中如果有错误,当然记得附上代码和报错的行数,或者思路上有问题可以回下贴,我有空帮你看看。
只有异常 = = 异常蛮多的 我这里有2行 就是9楼的 8和18行
new XWTable();

           public XWTable(){
albertwmm 2012-11-14
  • 打赏
  • 举报
回复
引用 4 楼 huntor 的回复:
上面的代码里data这个数组没有初始化。
还是没用阿。。。。
ZMS1972 2012-11-14
  • 打赏
  • 举报
回复
新手观注一下
huntor 2012-11-14
  • 打赏
  • 举报
回复
上面的代码里data这个数组没有初始化。
失落夏天 2012-11-14
  • 打赏
  • 举报
回复
你这不是空指针异常嘛,估计是你哪个变量忘了初始化了。报异常的时候你至少得看看哪一行报错,这样才好找错误点啊。你找到那一行,把每一个元素都system.out.println();一下,就知道哪个为空。 看你的思路是想把所有的用户都查询出来都显示在页面上面是吧? 你可以申明一个BUTTON组,然后在table的最后一栏里面添加一个按钮,然后对这个按钮添加监听就行了。 你的这个思路实现起来应该不会太难,当然,现在这种功能一般都使用SSH来实现了。 但是java的页面功能是很简单的,不是很好设置,如果从数据库提取的数据太多的话,一个页面显示不了怎么弄?分栏么?这又得麻烦一整子。 不过做这个还是挺有趣的,至少图形界面是比单纯的代码有意思多了。 今天有点晚了,以后如果代码中如果有错误,当然记得附上代码和报错的行数,或者思路上有问题可以回下贴,我有空帮你看看。
albertwmm 2012-11-14
  • 打赏
  • 举报
回复
引用 2 楼 juleikaka 的回复:
控制台有异常输出吧
是啊。 是有异常输出 连接成功 java.lang.ArrayIndexOutOfBoundsException: 0 at com.JingQiao.Table.XWTable.<init>(XWTable.java:55) at com.JingQiao.Table.XWTable.main(XWTable.java:21)
juleikaka 2012-11-14
  • 打赏
  • 举报
回复
控制台有异常输出吧
albertwmm 2012-11-14
  • 打赏
  • 举报
回复
有前辈看看 帮解答下吗
albertwmm 2012-11-14
  • 打赏
  • 举报
回复
引用 7 楼 h932075062 的回复:
数组首先的初始化,还有,最好使用vector来存储你查出来的数据吗,,然后把它夹在表格上显示。

	final Object[][] data=new Object[100][5] ;

public class XWTable extends JFrame{
	/**
	 * 
	 */
	private static final long serialVersionUID = 10L;

	public static void main(String[] args) throws Exception{
		new XWTable();
	}

	Connection conn = null ;
	Statement st = null ;
	ResultSet rs = null;

	JTable table ;
	TableModel model ;
	
	public XWTable(){
		
		model = new TableModel();
		table=new JTable();
		
		table.setModel(model);
		
		table.setPreferredScrollableViewportSize(new Dimension(500,500));//设置窗口大小

		JScrollPane scrollPane=new JScrollPane(table); //声明滚动条
		this.getContentPane().add(scrollPane,BorderLayout.CENTER);//将滚动条添加到窗口

		this.addWindowListener(new WindowAdapter(){
			public void windowClosing(WindowEvent e){
				System.exit(0);
			}
		});		
		this.pack();
		this.setVisible(true);
	}

	class TableModel extends DefaultTableModel{
		/**
		 * 
		 */
		private static final long serialVersionUID = 10L;

		final String[] columnNames={"姓名","学号","性别","班级","地址"};

		final Object[][] data=new Object[100][5] ;

		public TableModel(){

			try {
				conn =JdbcUtils.getConnection();
				st = conn.createStatement();
				rs = st.executeQuery
						("select* from CanKao_table");

				Vector ve = new Vector();
				ve.removeAllElements();
				
				model.fireTableStructureChanged();
				
				while(rs.next()){

					sop.Sop("连接成功");

					Vector ve_col = new Vector();

					ve_col.addElement(rs.getString(1).trim());
					ve_col.addElement(rs.getString(2).trim());
					ve_col.addElement(rs.getString(3).trim());
					ve_col.addElement(rs.getString(4).trim());
					ve_col.addElement(rs.getString(5).trim());

					ve.addElement(ve_col);

					sop.Sop("连接成功");
				}
				
				model.fireTableStructureChanged();
			} 
			catch (Exception e) {
				e.printStackTrace();
			}
			finally{
				JdbcUtils.free(rs, st, conn);
			}
		}

		public int getRowCount() {   		
			//返回行的数目
			return data.length;
		}

		public int getColumnCount() { 				
			//返回列的数目
			return columnNames.length;
		}

		public Object getValueAt(int rowIndex, int columnIndex) {				
			// 返回指定指定行、列的数据
			return data[rowIndex][columnIndex];			
		}

		public String getColumnName(int columnName){
			//指定列的名字
			return columnNames[columnName];            
		}
		public boolean isCellEditable(int row,int col){
            //不可编辑
			return false;             	
		}
	
}
}
还是运行不出来,eclipse没有明显的错误 出现异常 NullPointerException
albertwmm 2012-11-14
  • 打赏
  • 举报
回复
引用 7 楼 h932075062 的回复:
数组首先的初始化,还有,最好使用vector来存储你查出来的数据吗,,然后把它夹在表格上显示。
可否指教
微风飘过 2012-11-14
  • 打赏
  • 举报
回复
数组首先的初始化,还有,最好使用vector来存储你查出来的数据吗,,然后把它夹在表格上显示。

62,621

社区成员

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

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