怎样将数据库的数据读取到JTable中

搞了一下午,想要将数据库的数据展示到JTable中发现了很多方法。

 有的需要将读取到的数据放到Vctor类中,再用枚举类型将Vctor的数据一个一个读取出来。

甚是麻烦。

最终在linweieran的博客上发现了这个非常简单轻便的方法,供大家参考。

再次也感谢这位老师。 



转载自@

linweieran的博客

  在上一个博文中学习了如何用Java连接数据库,那么连接上数据库后干嘛用呢,肯定是对数据库进行增删改查,在这里我又学习了一下,如何用JTabke读取数据库。

      那么什么事JTable呢?在API中写道:JTable 用来显示和编辑常规二维单元表。也就是说利用 JTable 类,可以以表格的形式展示数据,可设置允许用户编辑数据。我这里只是简答你的用JTable读取数据,后面的功能以后再实现。

      那么如何使用JTable呢,在API中首先看JTable的构造方法:

[java]  view plain  copy
  1. <span style="font-size:18px;">public JTable(Object[][] rowData,  
  2.               Object[] columnNames)构造一个 JTable 来显示二维数组 rowData 中的值,其列名称为 columnNames。rowData 是一个行数组,因此可以通过以下代码获取第 1 行,第 5 列单元格的值:   
  3.   
  4.  rowData[1][5]; 所有行的长度必须与 columnNames 的长度相同。   
  5.   
  6.   
  7.   
  8. 参数:  
  9. rowData - 新表的数据  
  10. columnNames - 每列的名称</span>  

       新建class后需要写一个构造函数,在构造函数里设置列名,添加行数据这里只添加一行信息,加入画布中,设置大小,设置为可见。

[java]  view plain  copy
  1. public class Test1 extends JFrame {  
  2.       
  3.     //rowData用来存放行数据  
  4.     //columnNames存放列名  
  5.     Vector rowData,columnNames;  
  6.     JTable jt=null;  
  7.     JScrollPane jsp=null;  
  8.       
  9.     public static void main(String[] args) {  
  10.           
  11.         Test1 test1 = new Test1();  
  12.   
  13.     }  
  14.   
  15.     //构造函数  
  16.     public Test1(){  
  17.           
  18.         columnNames=new Vector();  
  19.         //设置列名  
  20.         columnNames.add("学号");  
  21.         columnNames.add("名字");  
  22.         columnNames.add("性别");  
  23.         columnNames.add("年龄");  
  24.         columnNames.add("籍贯");  
  25.         columnNames.add("系别");  
  26.           
  27.         rowData = new Vector();  
  28.         //rowData行数据,可以存放多行  
  29.         Vector hang=new Vector();  
  30.         hang.add("1");  
  31.         hang.add("linweieran");  
  32.         hang.add("男");  
  33.         hang.add("25");  
  34.         hang.add("spy");  
  35.         hang.add("自创");  
  36.           
  37.         //加入到rowData  
  38.         rowData.add(hang);  
  39.           
  40.         //初始化Jtable  
  41.         jt = new JTable(rowData,columnNames);  
  42.           
  43.         //初始化 jsp  
  44.         jsp = new JScrollPane(jt);  
  45.           
  46.         //把jsp放入到jframe  
  47.         this.add(jsp);  
  48.           
  49.         this.setSize(400300);  
  50.           
  51.         this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
  52.         this.setVisible(true);  
  53.           
  54.     }  

执行后的表格就是:

     这里只是添加了一行信息,但是读数据库的时候需要从数据库中读取数据,那么代码需要给的地方就是添加行数据的地方,可想而知,在添加行数据的地方需要连接数据库,然后用查询语句查找表,然后读取放入行中,再添加至rowData中,初始化JTable。那么代码如下:

[java]  view plain  copy
  1. public class Test2 extends JFrame {  
  2.       
  3.     //从数据库中取出信息  
  4.     //rowData用来存放行数据  
  5.     //columnNames存放列名  
  6.     Vector rowData,columnNames;  
  7.     JTable jt=null;  
  8.     JScrollPane jsp=null;  
  9.       
  10.     //定义数据库需要的全局变量  
  11.     PreparedStatement ps=null;  
  12.     Connection ct=null;  
  13.     ResultSet rs=null;  
  14.       
  15.       
  16.     public static void main(String[] args) {  
  17.           
  18.         Test2 test2=new Test2();  
  19.   
  20.     }  
  21.     //构造函数  
  22.         public Test2(){  
  23.               
  24.             columnNames=new Vector();  
  25.             //设置列名  
  26.             columnNames.add("学号");  
  27.             columnNames.add("名字");  
  28.             columnNames.add("性别");  
  29.             columnNames.add("年龄");  
  30.             columnNames.add("籍贯");  
  31.             columnNames.add("系别");  
  32.               
  33.             rowData = new Vector();  
  34.             //rowData可以存放多行,开始从数据库里取  
  35.               
  36.             try {  
  37.                 //加载驱动  
  38.                 Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");  
  39.                 //得到连接  
  40.                 ct=DriverManager.getConnection("jdbc:microsoft:sqlserver://127.0.0.1:1433;databaseName=spdb1","sa","sa");  
  41.                   
  42.                 ps=ct.prepareStatement("select * from stu");  
  43.                   
  44.                 rs=ps.executeQuery();  
  45.                   
  46.                 while(rs.next()){  
  47.                     //rowData可以存放多行  
  48.                     Vector hang=new Vector();  
  49.                     hang.add(rs.getString(1));  
  50.                     hang.add(rs.getString(2));  
  51.                     hang.add(rs.getString(3));  
  52.                     hang.add(rs.getInt(4));  
  53.                     hang.add(rs.getString(5));  
  54.                     hang.add(rs.getString(6));  
  55.                       
  56.                     //加入到rowData  
  57.                     rowData.add(hang);  
  58.                 }  
  59.             } catch (Exception e) {  
  60.                 e.printStackTrace();  
  61.             } finally{  
  62.                   
  63.                     try {  
  64.                         if(rs!=null){  
  65.                         rs.close();  
  66.                         }  
  67.                         if(ps!=null){  
  68.                             ps.close();  
  69.                         }  
  70.                         if(ct!=null){  
  71.                             ct.close();  
  72.                         }  
  73.                     } catch (SQLException e) {  
  74.                         e.printStackTrace();  
  75.                     }  
  76.             }  
  77.               
  78.                           
  79.             //初始化Jtable  
  80.             jt = new JTable(rowData,columnNames);  
  81.               
  82.             //初始化 jsp  
  83.             jsp = new JScrollPane(jt);  
  84.               
  85.             //把jsp放入到jframe  
  86.             this.add(jsp);  
  87.               
  88.             this.setSize(400300);  
  89.               
  90.             this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
  91.             this.setVisible(true);  
  92.               
  93.         }  






结束

linweieran

猜你喜欢

转载自blog.csdn.net/tobin_xu/article/details/78934437