问题如题:代码如下 private static void testDatabase(){
String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
String dbUrl = "jdbc:sqlserver://192.168.1.110:1433;DatabaseName=testDataBase";
String userName = "sa";
String pwd = "123456";
try {
Class.forName(driverName);
Connection conn = DriverManager.getConnection(dbUrl,userName,pwd);
System.out.println("连接成功");
String sql = "select * from CM_COMPETENCE";//错误sql语句
                        String sql = "select * from testDataBase.CM_COMPETENCE";//正确sql语句
PreparedStatement ps = conn.prepareStatement(sql);
ps.execute();
conn.close();
} catch (Exception e) {
e.printStackTrace();
System.out.println("连接失败");
}
}

解决方案 »

  1.   

    Server端问题吧。检查建表(你这个CM_COMPETENCE是表吧)的时候,是否用了testDataBase.CM_COMPETENCE作为表名。
    检查SA账号是否用了testDataBase作为它的用户映射默认架构。
      

  2.   

    先谢谢了
    表名可定不是testDataBase.CM_COMPETENCE  是CM_COMPETENCE,这是从oracle中导进来的
    sa的默认架构是testDataBase,没有效果。
      

  3.   

    昨天csdn升级悲剧,木有及时回帖。。
      

  4.   


    把显示结果截图发上来吧
    平时做demo还没有遇到这样的问题
      

  5.   

    连接成功
    连接失败
    com.microsoft.sqlserver.jdbc.SQLServerException: 对象名  'CM_COMPETENCE' 无效。
    at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(Unknown Source)
    at com.microsoft.sqlserver.jdbc.IOBuffer.processPackets(Unknown Source)
    at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.getPrepExecResponse(Unknown Source)
    at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(Unknown Source)
    at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PreparedStatementExecutionRequest.executeStatement(Unknown Source)
    at com.microsoft.sqlserver.jdbc.CancelableRequest.execute(Unknown Source)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeRequest(Unknown Source)
    at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.execute(Unknown Source)
    at jdbcTest.TestSqlServer2005.testDatabase(TestSqlServer2005.java:31)
    at jdbcTest.TestSqlServer2005.main(TestSqlServer2005.java:14)