这个是数据库检索的一个类,编译老是说过时的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;
}
}
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;
}
}
我只知道Vector已经不再推荐使用了。
import java.sql.*;
import java.util.*;
import javax.swing.*;
试试看
程序本来嘛不会的就要试试看
嘿嘿
2 在方法getObjectRow(String sqlStr)中你用了一个强制转换vdata.addElement((String) rs.getObject(i));
有可能会出错,还是把你的错误报出来吧
下面是连接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();
}
}
}
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);
请大家帮我看看.
Vector vname = new Vector();
谁能告诉是怎么回事阿.........每句都有异常了 连
rs = connection.prepareStatement(sqlStr).executeQuery();
都有异常...
这两个地方有问题,报空指针说明你那个地方使用了一个变量,但是该变量的值为null,LZ要单步调试一下,看看变量的值得变化