当前位置:首页
开发技术指南» 文章正文
    引言:

    摘要: 表结构如下: 日期 名字 价格 20050505 a 2 20050506 b 3 20050507 c 5 其他的数据依次类推,名字可能还会有d,e,f之类的 要求得到这样的结果 日期 a b c d e 20050505 2 0 0 0 0 20050506 0 3 0 0 0 20050507 0 0 5 0 0 等等,名字中有多少个不相同的,那么标......
    摘要: datagrid无刷新查询怎么做呀 kaixin110@msn.com qq:33482898 ......


jdbc连接数据库得到列名和值,显示在JTable中出错,已经郁闷到内伤

小弟近来学习jdbc,想把表的内容显示到JTable中,但是老是出问题,请大家帮帮我,看看我的代码哪里错了?谢谢!  
  下面是我写的代码:  
   
  import   java.sql.Connection;  
  import   java.sql.DriverManager;  
  import   java.sql.ResultSet;  
  import   java.sql.ResultSetMetaData;  
  import   java.sql.SQLException;  
  import   java.sql.Statement;  
   
  import   javax.swing.JFrame;  
   
  import   javax.swing.JTable;  
  /**  
    *   @author   Administrator  
    *  
    *   TODO   要更改此生成的类型注释的模板,请转至  
    *   窗口   -   首选项   -   Java   -   代码样式   -   代码模板  
    */  
  public   class   JTableTest   extends   JFrame   {  
   
  private   javax.swing.JPanel   jContentPane   =   null;      
  private   JTable   jTable   =   null;  
  String[]   columnNames=null;  
   
  Object[][]   data=null;  
   
  /**  
    *   This   method   initializes   jTable  
    *    
    *   @return   javax.swing.JTable  
    */          
  // private   JTable   getJTable()   {  
  // if   (jTable   ==   null)   {  
  // jTable   =   new   JTable(data,columnNames);  
  // }  
  // return   jTable;  
  // }  
    public   static   void   main(String[]   args)   throws   Exception   {  
    JTableTest   t=new   JTableTest();  
    t.show();  
    System.out.println("ooookkkkkkk");  
  }  
  /**  
    *   This   is   the   default   constructor  
    *   @throws   Exception  
    */  
  public   JTableTest()   throws   Exception   {  
   
  initialize();  
  }  
  /**  
    *   This   method   initializes   this  
    *    
    *   @return   void  
    *   @throws   Exception  
    */  
  private   void   initialize()   throws   Exception   {  
   
    Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");  
    String   url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs";  
    Connection   con=DriverManager.getConnection(url,"sa","sa");  
    Statement   stmt=con.createStatement();  
    ResultSet   rs=stmt.executeQuery("select   *   from   authors");  
    ResultSetMetaData   rsm=rs.getMetaData();  
    for(int   i=1;i<rsm.getColumnCount();i++)  
    {  
    columnNames[i-1]=rsm.getColumnName(i);  
    }  
    //while(rs.next())  
    for(int   j=1;j<rs.getRow();j++)  
    {  
    for(int   i=1;i<rsm.getColumnCount();i++)  
    {  
    data[j-1][i-1]=rs.getObject(i);  
    }  
    }  
    rs.close();  
    stmt.close();  
    con.close();  
     
    jTable   =   new   JTable(data,columnNames);  
    this.setContentPane(jTable);  
  this.setSize(676,   383);  
  this.setTitle("JFrame");  
  }  
  /**  
    *   This   method   initializes   jContentPane  
    *    
    *   @return   javax.swing.JPanel  
    */  
  private   javax.swing.JPanel   getJContentPane()   {  
  if(jContentPane   ==   null)   {  
  jContentPane   =   new   javax.swing.JPanel();  
  jContentPane.setLayout(new   java.awt.BorderLayout());  
  }  
  return   jContentPane;  
  }  
  }     //     @jve:decl-index=0:visual-constraint="92,25"  
   
  我感觉我自己的写的代码没错了,但是运行的时候就是报错,以下是报错的内容:  
   
  java.lang.NullPointerException  
  at   j2ee_bean.JTableTest.initialize(JTableTest.java:73)  
  at   j2ee_bean.JTableTest.<init>(JTableTest.java:55)  
  at   j2ee_bean.JTableTest.main(JTableTest.java:45)  
  Exception   in   thread   "main"  
   
  唉,郁闷呀!  
 

NO.1   作者: gongyifeng_cs

楼主用的是eclipse的Ve开发的吧?  
  代码是没错,你sqlserver的jdbc驱动下载了吗,一共好像3个jar文件,你把它们添加到工程的lib目录下在试一试

NO.2   作者: luwenshuo

这个你自己去找吧,.主要看DefaultTableModel的使用   这是我很久以前做的了,应该没问题我这里没装工具也不好测试,你先看看吧  
   
  import   java.awt.*;  
  import   java.awt.event.*;  
  import   java.util.*;  
  import   javax.swing.table.*;  
  import   javax.swing.*;  
  import   javax.swing.event.*;  
   
  public   class   classMain   extends   JInternalFrame   {  
           
   
          public   classMain()   {  
          frm   =   this;  
                  initComponents();  
                  setVisible(true);  
          }  
       
          private   void   initComponents()   {  
          font   =   new   Font("新宋体",Font.PLAIN,12);  
                  jTitle   =   new   JLabel();  
                  classTable   =   new   JTable();  
                  btOK   =   new   JButton();  
   
                  getContentPane().setLayout(null);  
   
                  setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);  
                  jTitle.setFont(new   java.awt.Font("新宋体",   0,   14));  
                  jTitle.setText("班级一览表");  
                  getContentPane().add(jTitle);  
                  jTitle.setBounds(250,   10,   120,   20);  
   
                  classTable.setFont(font);  
     
    JScrollPane   sl   =   new   JScrollPane(classTable);  
     
                  getContentPane().add(sl);  
                  sl.setBounds(0,   60,   590,   360);  
    initclassTable();  
   
                  getContentPane().add(btOK);  
                  btOK.setBounds(420,   440,   70,   25);  
   
                  btOK.setFont(new   java.awt.Font("新宋体",   0,   12));  
                  btOK.setText("确定");  
                  getContentPane().add(btOK);  
                  btOK.setBounds(510,   440,   70,   25);  
                  btOK.addActionListener(new   ActionListener()   {  
                  public   void   actionPerformed(ActionEvent   e)   {  
                  frm.setVisible(false);  
                  }  
                  });  
                   
                  Dimension   screenSize   =   Toolkit.getDefaultToolkit().getScreenSize();  
                  setBounds((screenSize.width-600)/2,   (screenSize.height-515)/2,   600,   515);     //设置窗口大小  
          }  
           
          private   void   initclassTable()   {  
          String   title[]   =   new   String[]{"班级名称","开班日期","学期","班主任姓名","上课时间"};  
          dtm   =   new   DefaultTableModel(null,title);  
          classTable.setModel(dtm);  
          DBclass.query("select   *   from   class");  
          try{  
          Vector   v;  
          while(DBclass.rs.next())   {           //rs为数据库模块的记录集  
          v   =   new   Vector();  
          v.addElement(DBclass.rs.getString("className"));  
          v.addElement(DBclass.rs.getString("classDate"));  
          v.addElement(DBclass.rs.getString("classTerm"));  
          v.addElement(DBclass.rs.getString("classTeacherName"));  
          v.addElement(DBclass.rs.getString("classTime"));  
           
          dtm.addRow(v);  
          }  
           
          }catch(Exception   e)   {  
          System.out.println("classMain(initclassTable):   "   +   e.getMessage());  
          }  
          }  
   
   
     
        public   static   void   main(String   args[])   {  
          DBclass.joinDB();       //连接数据库类  
                                  new   classMain().setVisible(true);  
   
          }  
          private   classMain   frm;  
          private   DefaultTableModel   dtm;  
          private   Font   font;  
          private   JButton   btOK;  
          private   JTable   classTable;  
          private   JLabel   jTitle;  
           
  }  
 


 ·如何让树全部展开    »显示摘要«
    摘要: 如何让树全部展开! 在运行主窗口后 ......
» 本期热门文章:
· 热门栏目:
» 相关精选文章
» 其它相关:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE