import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Rectangle;
import java.sql.*;
import java.util.Vector;
import javax.swing.JOptionPane;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JFrame;public class XianShiSJ { public JTable  player;
public JScrollPane jsplayer;
public JTable  style;
public JScrollPane jsstyle;
public JTable  play;
    public JScrollPane jsplay;
public Connection con;
public Statement  statement;
public ResultSet  rs1;
public ResultSetMetaData  rsmd1;
public ResultSet  rs2;
public ResultSetMetaData  rsmd2;
    public ResultSet  rs3;
public ResultSetMetaData  rsmd3;
    Myyun m=new Myyun();  //url中指定ODBC中设置的DSN名称   
  
  public void LJshuju(){
  //加载驱动程序以连接数据库   
   try   
       { 
    String   url   =   "jdbc:microsoft:sqlserver://YUNHAI:1433;" +
        "DatabaseName_A=运动员;DatabaseName_B=花样跳水;DatabaseName_C=比赛项目";    
        String   username   ="sa";     
        String   password   ="312147";   
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); 
        Connection  con  =   DriverManager.getConnection( url,   username,   password   ); 
        Statement   statement=con.createStatement();
        
       }     
  //捕获加载驱动程序异常 
   catch(ClassNotFoundException e)
   {
   e.printStackTrace();
   System.exit(0);
   }
    catch(SQLException e){
 e.printStackTrace();
        System.exit(0);   
       }
    
    
    
  }
       public   void   Xianshi(ResultSet rs ,ResultSetMetaData rsmd,JTable jtable,JScrollPane js,int y,int height)
            throws   SQLException     
         {     
      boolean moreRecords=rs.next();       
      if   ( !moreRecords ){     
                      return;     
                     }     
      Vector   columnHeads=new   Vector();     
      Vector   rows=new   Vector();     
      try   {     
              
            for   
            (   int i=1;   i<=rsmd.getColumnCount(); ++i )     
                  columnHeads.addElement( rsmd.getColumnName(i) );     
            do   
            {     
                  rows.addElement(  getNextRow( rs, rsmd ) );     
            }   
            while   (   rs.next()   );   
             jtable=new JTable(rows,columnHeads);
              js=new JScrollPane(jtable);
              js.setBounds(0, y, 800, height);
               m.getJContentPane().add(js,null);    
             
              
     
          }     
      catch (SQLException  sqlex )  
      {     
            sqlex.printStackTrace();     
      }     
}     
    private   Vector   getNextRow(   ResultSet   rs, ResultSetMetaData   rsmd   )         
                                            
        throws   SQLException     
   {     
      Vector   currentRow   =   new   Vector();     
      for   (   int   i   =   1;   i   <=   rsmd.getColumnCount();   ++i   )     
            currentRow.addElement(   rs.getString(   i   )   );     
      //返回一条记录         
      return   currentRow;    
   }
    
    public void xssj(){ 
      String query1="select * from 运动员";
         String query2="select * from 花样跳水";
         String query3="select * from 比赛项目";
         LJshuju();
         try {
        ResultSet  rs1=statement.executeQuery(query1);
        ResultSetMetaData rsmd1=rs1.getMetaData();
        ResultSet  rs2=statement.executeQuery(query2);
        ResultSetMetaData rsmd2=rs2.getMetaData();
        ResultSet  rs3=statement.executeQuery(query3);
        ResultSetMetaData rsmd3=rs3.getMetaData();
       
        Xianshi( rs1, rsmd1,player,jsplayer,25,140);
        getNextRow( rs1, rsmd1);
        Xianshi( rs2, rsmd2,style,jsstyle,185,100);
        getNextRow( rs2, rsmd2);
        Xianshi( rs3, rsmd3,play,jsplay,300,120);
        getNextRow( rs3, rsmd3);
         }
         catch(SQLException sqlex)
         { sqlex.printStackTrace();
         }
      
       }
}
    

解决方案 »

  1.   

    上面发的是连接数据库和查询并显示在图形界面的Jtable上的代码
    下面是我用visual  editor  开发的图形界面和主程序的代码public void actionPerformed(ActionEvent event){
    String Lable=event.getActionCommand();
     if (Lable.equals("打开赛季数据文件"));
         {  
     XianShiSJ  xianshisj=new  XianShiSJ();
     xianshisj.xssj();

     
         }
       }
     public static void main(String[] args){
    Myyun my=new Myyun();
    my.setVisible(true);
           my.addWindowListener(     
                    new   WindowAdapter()   {     
                          public   void   windowClosing(   WindowEvent   e   )     
                          {       
                                    
                                System.exit(   0   );     
                          }     
                    }     
              );     
        }  
    }
    由于太长
    我只能发其中的一部分,其余的部分都是界面代码,太长了
    发不了
    请原谅请大家帮我看看
    谢谢!!!!
      

  2.   

    对了
    运行的时候
    在点采单的"打开数据库文件"时老出现
     NullPointerException  错误
    不知怎么回事
      

  3.   

    图形界面的类是Myyun,我在主程序中声明了一个对象