日期:2014-05-18  浏览次数:20749 次

JDBC 连接SQL SERVER 2000 问题
首先付上源文件:
opendb.java
-------------------------------------
package   opendb;     //定义包opendb
import   java.sql.*;       //引入java.sql.*
import   javax.sql.*;
import   javax.naming.*;

public   class   opendb  
{
static   Connection   conn=null;
static   ResultSet   rs=null;


public   static   void   main(String[]   args)
{
    opendb   db=new   opendb();
    db.opendb();
    ResultSet   temp=db.executeQuery( "select   *   from   123 ");
          try   {
            if(temp.next())
      System.out.println(temp.getString(1));
    }   catch   (SQLException   e)   {
      //   TODO   Auto-generated   catch   block
      e.printStackTrace();
    }

}  
public   void   opendb()  
{
    try
    {
      Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver ");
      conn   =   DriverManager.getConnection( "jdbc:odbc:dreamsky ", "sa ", "850811 ");
    }
    catch(Exception   exc)
    {
      exc.printStackTrace();
    }
}


//定义执行sql语句的函数
public   ResultSet   executeQuery(String   sql)  
{
    rs=null;
   
    try
    {
      Statement   stmt=conn.createStatement();
      rs=stmt.executeQuery(sql);
    }
    catch   (SQLException   ex)
    {
      System.err.println( "aq.executeQuery: "+ex.getMessage());
    }
   
    return   rs;//返回sql语句的执行结果
}


}  
------------------------------------
下面是报错:
aq.executeQuery:[Microsoft][ODBC   SQL   Server   Driver][SQL   Server]第   1   行:   '123 '   附近有语法错误。
Exception   in   thread   "main "   java.lang.NullPointerException
at   opendb.opendb.main(opendb.java:19)

提示SqlException异常,是否能够说明数据库已经连接上了?
因为是在执行executeQuery函数时出的错误。
我的数据表名为123,里面有数据。但却出现
java.lang.NullPointerException,出错在if(temp.next())上,temp指向最开头,即0行,那temp.next应该指向第一行数据才对,但却出现.NullPointerException,表现为数据库无数据。
还有一个问题,上述驱动   sun.jdbc.odbc.JdbcOdbcDriver   应该在JDK中有吧。
我也下载了SQL   SERVER   2000   FOR   JDBC
如果用com连接,是否用到数据源。请问什么时候用数据源,我上述的方法不用吧?

------解决方案--------------------
关于语法错误,把表名改成以字母开头的试试.
------解决方案--------------------
sun.jdbc.odbc.JdbcOdbcDriver在JDK目录\jre\lib\rt.jar里.
你的方法不用数据源,如果要用连接池就设置数据源.
不管用哪种驱动,都要放到正确路径下,如用Tomcat,就放到web-inf\lib下或common\lib下.