import java.sql.*;public class TestDML { public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
try {
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
conn = DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName = msdb","sa","123");
stmt = conn.createStatement();
String sql = "insert into dept values ('12', '25', '26')";
stmt.executeUpdate(sql);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if(stmt != null) {
stmt.close();
stmt = null;
}
if(conn != null) {
conn.close();
conn = null;
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
我的dept表是这样建的:
create table dept (
id1 char(2) primary key,
id2 char(4),
id3 char(2)
);
运行后提示:
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]对象名 'dept' 无效。
at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processErrorToken(Unknown Source)
at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReplyToken(Unknown Source)
at com.microsoft.jdbc.sqlserver.tds.TDSExecuteRequest.processReplyToken(Unknown Source)
at com.microsoft.jdbc.sqlserver.tds.TDSRequest.processReply(Unknown Source)
at com.microsoft.jdbc.sqlserver.SQLServerImplStatement.getNextResultType(Unknown Source)
at com.microsoft.jdbc.base.BaseStatement.commonTransitionToState(Unknown Source)
at com.microsoft.jdbc.base.BaseStatement.postImplExecute(Unknown Source)
at com.microsoft.jdbc.base.BaseStatement.commonExecute(Unknown Source)
at com.microsoft.jdbc.base.BaseStatement.executeUpdateInternal(Unknown Source)
at com.microsoft.jdbc.base.BaseStatement.executeUpdate(Unknown Source)
at TestDML.main(TestDML.java:13)
数据库连接没有问题,就是不晓得什么原因。操作不了数据库!

解决方案 »

  1.   

    String sql = "insert into dept(id1, id2, id3) values('12', '25', '26')";sql语句写错了
      

  2.   

    你可以在数据库配置上配置读取指定的库.
    或者操作表时加上库名"insert into dbo.库名.dept values ('12', '25', '26')"; 
      

  3.   

    好象说反了  库名.dbo.表名
    原因是sa是系统用户,权限都是dbo的.或者你可以重新创建一个用户,分配权限也可以.
      

  4.   


    这个sql语句没有错,对不起!
      

  5.   

    还可以在你的sqlserver 2000配置上改.你的本地服务上有 安全性-->登陆-->有个sa用户(右键-->属性)-->指定此登陆的默认语言和数据库(选你要用的库就可以了)
      

  6.   

    请检查你的 dept 在 msdb 下吗?
    表不在库下面会报这个错。
      

  7.   

    谢谢大家,特别感谢2L的
    wangpeng88888888 
    问题终于解决了!