我编了个java程序,在java中连接MS SQL Server 2000数据库
程序如下:
import java.sql.*;
public class JDBCTest
{
public static void main(String userPwd =ing[] args) 
{
String driverName = “com.microsoft.jdbc.sqlserver.SQLServerDriver”;
String dbURL = “jdbc:microsoft:sqlserver://192.168.0.97:1433; DatabaseName=wtest”;
String userName ="sa";
String userPwd = "sa";try
 {
Class.forName(driverName);
dbConn = DriverManager.getConnection(dbURL, userName, userPwd);
System.out.println(”Connection Successful!”);
}
Catch (Exception e) {
e.printStackTrace();
}
dbConn.close();
}
}注:192.168.0.97是我的服务器,其上有一数据库wtest,wtest中有一表book。
程序运行结果为:
Connection Successful!
说明连接数据库成功了。
然后我在程序中加了一部分内容,想把表book中各记录的bookID字段(varchar类型)输出。
程序如下:import java.sql.*;
public class JDBCTest 
{
   public static void main(String[] args)
   {
     String driverName = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
     String dbURL = "jdbc:microsoft:sqlserver://192.168.0.97:1433; DatabaseName=wtest";
     String userName = "sa";
     String userPwd = "sa";
     Connection dbConn;
    
     try
     {
      Class.forName(driverName);
      dbConn = DriverManager.getConnection(dbURL, userName, userPwd);
      if(dbConn!=null)
      System.out.println("Connection  Successful!");
      Statement stmt=dbConn.createStatement();
      ResultSet rst=stmt.executeQuery("select * from book;");
      while(rst.next())
      {
        String id=rst.getString("bookID");
        System.out.println(id);
              
      }
      //关闭连接、释放资源
      rst.close();
      stmt.close();
      dbConn.close();
     }
    catch(Exception e)
    {
      e.printStackTrace();
    }
   }
}此时程序运行结果为:Connection  Successful!
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]对象名 'book' 无效。请问这是怎么回事?请高手指教!不胜感激!谢谢!

解决方案 »

  1.   

    不是说的很清楚吗 对象名book无效 首先你确认一下是否有book表 你的book表是否在wtest数据库下 然后你将代码
     ResultSet rst=stmt.executeQuery("select * from book;");
    再修改一下
    ResultSet rst=stmt.executeQuery("select * from book"); 
      

  2.   

    我的book表确实在数据库下啊。
      

  3.   

    ResultSet rst=stmt.executeQuery("select * from book;");
    JAVA中写SQL语句不加分号吧!仔细,仔细,再仔细。认真看了错了,进步才是实实在在的
    一起学习啊,一起实在的进步
      

  4.   

    book表在wtest数据库下,我也修改了,但还是不行。
      

  5.   

    问题解决了,楼主那是不是该结贴了 HOHO
      

  6.   

    还是刚才的那个错:
    Connection  Successful!
    java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]对象名 'book' 无效。
      

  7.   

    String sql="select bookID,bookName from book";
    System.out.println(sql);          //打印一下sql看放到数据库能不能查到数据
    ResultSet rst=stmt.executeQuery(sql);
          while(rst.next())
          {
            String id=rst.getString(1);
            String id=rst.getString(2);        System.out.println(id);
                  
          }
      

  8.   

    String sql="select bookID,bookName from book";
    System.out.println(sql);          //打印一下sql看放到数据库能不能查到数据
    ResultSet rst=stmt.executeQuery(sql);
          while(rst.next())
          {
            String id=rst.getString(1);
            String name=rst.getString(2);        System.out.println(id);
                  
          }
      

  9.   

    to Ami121:
    还是不行,和原来一样的错误。
      

  10.   

    可能是你没打sp3或sp4 的补丁
      

  11.   

    建议重新启动一下数据库和web服务器,这样试试!
      

  12.   

    改成ResultSet rst=stmt.executeQuery("select * from wtest.book");试试
      

  13.   

    问题解决了,我把select * from book
    改成了:select * from wtest.dbo.book 就可以了,谢谢大家,我一会儿结贴给分哈。
      

  14.   

    select * from wtest.dbo.book
    这是什么哦 你的表怎么放的哦???????
      

  15.   

    很明显他使用登陆的用户,不是wtest这个数据库的专属用户,而是一个sys用户,可以访问多个数据库和里面的表。所以要加schema的
      

  16.   

    用了你的代码一试,完全通过,就是dbConn那里要先声明:Connection dbConn
      

  17.   

    String dbURL = "jdbc:microsoft:sqlserver://192.168.0.114:1433;  DatabaseName=wtest";
    这句话有毛病呀 呀呀 !!
    你 在 //192.168.0.114:1433;(此处有一个空格)DatabaseName=wtest";他们的 中间加了“~~空格~~~” 你把空格去掉就可以找到 wtest的数据库了! 有空格的时候虽然是连接成功了 但是并没有找到任何的Database!