日期:2014-05-20  浏览次数:21006 次

jdbc+sql server2005 对象名无效
我建立了一个BusData的数据库,里面建立了一个lineData的表,连接数据库的时候没问题,但是做插入操作的时候,说“对象名lineData无效”。但是,我保证我的数据库里的表就是这个?为什么还会出现这个问题,如何解决啊?请各位帮帮忙~
  另外,让人觉得诡异的是,我第一次创建数据库和表,进行上述操作的时候就没问题,在这个数据库里其他的表却不行,后来重新创建数据库和表,也都不行了,全是这个问题,怎么办?我是新手,求各位帮忙~代码如下:
import java.sql.*;

public class IName {
static Connection con;
static PreparedStatement sql;
static ResultSet res;

public Connection getConnection(){
try{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
System.out.println("数据库驱动加载成功");
}catch(ClassNotFoundException e){
e.printStackTrace();
}
try{
con=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabseName=BusData","sa","19880920");
System.out.println("数据库连接成功");
}catch(SQLException e){
e.printStackTrace();
}
return con;
}
public static void main(String[] args){
IName c = new IName();
c.getConnection();
try{
sql = con.prepareStatement("insert into lineData values(?,?)");
sql.setInt(1,11);
sql.setString(2,"29lu");
sql.executeUpdate();
sql = con.prepareStatement("select * from lineData");
res = sql.executeQuery();
System.out.println("插入后结果:");
while(res.next()){
int id=res.getInt(1);
String name= res.getString(2);
System.out.print("编号:"+ id);
System.out.println("名字:"+ name);

}
}catch(Exception e){
e.printStackTrace();
}
}
}

控制台输出和报错如下:

数据库驱动加载成功
数据库连接成功
com.microsoft.sqlserver.jdbc.SQLServerException: 对象名 'lineData' 无效。
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:197)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1493)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(SQLServerPreparedStatement.java:390)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PrepStmtExecCmd.doExecute(SQLServerPreparedStatement.java:340)
at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:4575)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1400)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:179)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:154)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.executeUpdate(SQLServerPreparedStatement.java:308)
at IName.main(IName.java:30)


------解决方案--------------------
我觉得应该是con=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabseName=BusData","sa","19880920");
这行代码出错了,你再仔细看看,是不是你的数据库名写错了,如果找不到数据库,肯定找不到数据库中的表