这个是数据库检索的一个类,编译老是说过时的api, 然后运行的时候老有异常跳出来,郁闷死我了.不知道哪出问题了,这是一本书上的代码.  麻烦大家帮帮忙..
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.util.Collection;
import java.util.Vector;
import javax.swing.table.DefaultTableModel;/**
 *
 * @author cf
 */
public class RetrieveObject {
     private Connection connection = null;
     private ResultSet rs = null;
     private ResultSetMetaData rsmd = null;    public RetrieveObject(){    }
    
    
    
    
    
    public Collection getTableCollection(String sqlStr){
        System.out.println("执行的集合查询为 :" + sqlStr);
        Collection collection = new Vector();
        connection = connectjdbc.connection;
       
        try{
            rs = connection.prepareStatement(sqlStr).executeQuery();
            rsmd = rs.getMetaData();
            while(rs.next()){
                Vector vdata = new  Vector();
                for ( int i = 1 ; i <= rsmd.getColumnCount() ; i ++){
                    vdata.addElement( rs.getObject(i));
                }
                collection.add(vdata);
            }
        }catch(java.sql.SQLException sql){
           
           
            sql.printStackTrace();
            return null;
        }
        return collection;
    }
    public DefaultTableModel getTableModel(String[] name,String sqlStr){
        Vector  vname = new Vector();
        for (int i = 0 ; i < name.length ; i++){
            vname.addElement(name[i]);
        }
        DefaultTableModel tableModel = new DefaultTableModel(vname,0);        connection = connectjdbc.connection;
        try{
            rs = connection.prepareStatement(sqlStr).executeQuery();
            rsmd = rs.getMetaData();
            while(rs.next()){
                Vector vdata = new Vector();
                for ( int i = 1 ; i <= rsmd.getColumnCount() ; i ++){
                    vdata.addElement(rs.getObject(i));
                }
                tableModel.addRow(vdata);
            }
        }catch(java.sql.SQLException sql){
            sql.printStackTrace();
            
            return null;
        }
        return tableModel;
    }
   
    public Vector getObjectRow(String sqlStr){
       Vector vdata=new  Vector();
       
        connection = connectjdbc.connection;
        try{
            rs = connection.prepareStatement(sqlStr).executeQuery();
            rsmd = rs.getMetaData();
            while(rs.next()){
                for ( int i = 1 ; i <= rsmd.getColumnCount() ; i ++){
                    vdata.addElement((String) rs.getObject(i));
                }
            }
        }catch(java.sql.SQLException sql){
            sql.printStackTrace();
            return null;
        }
        return vdata;
    }
}

解决方案 »

  1.   

    哪个过时啊?你用的是哪个版本的jdk?
    我只知道Vector已经不再推荐使用了。
      

  2.   

    好象没有过时的啊!不过我推荐你把Vector加上泛型比较安全一些
      

  3.   

    这个我也不是很清楚……但是到有可能是包的问题!你可以把包名该一下
    import java.sql.*; 
    import java.util.*; 
    import javax.swing.*; 
    试试看
    程序本来嘛不会的就要试试看
    嘿嘿   
      

  4.   

    1“编译老是说过时的api”是可能是因为你用了Vector,现在大部分用ArrayList
    2 在方法getObjectRow(String sqlStr)中你用了一个强制转换vdata.addElement((String) rs.getObject(i));
     有可能会出错,还是把你的错误报出来吧
      

  5.   

    先保证数据库连接成功吧,
    下面是连接sqlserver2000的代码示例:
    import java.sql.*;
    public class Stu{
    public static void main(String[] args){
    try{
    Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
    System.out.println("loading...");
    String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs";
    String user="sa";
    String password="sa"; //sa用户密码
    Connection conn=DriverManager.getConnection(url,user,password);
    System.out.println("sucessed...");
    /*
    Statement stmt=conn.createStatement();
    String sql="select * from stu_inf";

    ResultSet rs=stmt.executeQuery(sql);
    while(rs.next()){
    int id=rs.getInt("id");
    String name=rs.getString("name");
    String sex=rs.getString("sex");
    String add=rs.getString("address");
    System.out.println(id+" "+name+" "+sex+" "+add);
    }
    */
    }catch(Exception e){
    System.out.println("failed!");
    e.printStackTrace();
    }
    }
    }
      

  6.   

    现在编译的时候没有警告了,不知为撒,但是运行的时候还是有异常.
    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
            at data.RetrieveObject.getTableModel(RetrieveObject.java:64)
            at view.grade.initComponents(grade.java:127)
            at view.grade.<init>(grade.java:29)
            at view.appmain$action.actionPerformed(appmain.java:106)
            at java.awt.MenuItem.processActionEvent(MenuItem.java:627)
            at java.awt.MenuItem.processEvent(MenuItem.java:586)
            at java.awt.MenuComponent.dispatchEventImpl(MenuComponent.java:300)
            at java.awt.MenuComponent.dispatchEvent(MenuComponent.java:288)
            at java.awt.EventQueue.dispatchEvent(EventQueue.java:602)
            at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
            at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
            at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
            at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
            at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
            at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
    这个是我做表格当中的一段代码:
            DefaultTableModel tablemodel = null;
            String[] name = {"班级编号","年级编号","班级名称"};
            String sqlStr = "select * from class";
            data.RetrieveObject bdt = new  data.RetrieveObject();
            tablemodel = bdt.getTableModel(name,sqlStr);
            jTable1.setModel(tablemodel);
    请大家帮我看看.
      

  7.   

    第64是这句
    Vector  vname = new Vector(); 
      

  8.   

    郁闷死我了,这三个方法不管调用哪个都会出现这个异常 java.lang.NullPointerException
    谁能告诉是怎么回事阿.........每句都有异常了 连
    rs = connection.prepareStatement(sqlStr).executeQuery(); 
    都有异常...
      

  9.   

    DefaultTableModel tablemodel = null; tablemodel = bdt.getTableModel(name,sqlStr);
    这两个地方有问题,报空指针说明你那个地方使用了一个变量,但是该变量的值为null,LZ要单步调试一下,看看变量的值得变化