0

当我使用 JDBC ODBC 驱动程序将 Java 连接到 Mssql

try 
{
    ps=conn.prepareStatement("UPDATE products SET stock=? WHERE id=?");

    ps.setInt(1, prods.getStock());
    ps.setInt(2, prods.getId());

    int b = ps.executeUpdate();

    if(b!=0)
    {
        System.out.println("success");
    }
    else
    {
        System.out.println("Fail");
    } 
}
catch(SQLException e)
{
    System.out.println(e);
}

这个 catch 块引发了这个异常

java.sql.SQLException [Microsoft] [ODBC SQL Server Driver]
  [SQL Server] Invalid object name 'products'

我从过去 2 天开始就在这部分工作。我将如何解决这个异常?

4

4 回答 4

5

找不到表时会抛出此错误消息。这可能有几个原因:

  • 您正在连接到不同的数据库
  • 该表已被删除
  • 该表在另一个数据库模式中
  • 您的用户不再对该表具有读取权限
于 2012-05-16T11:40:11.740 回答
1

我想您的连接字符串没有默认数据库-您可能正在连接到“master”,在这种情况下,上述方法将不起作用

您可以通过使用数据库和模式名称限定查询来测试这一点:

例如

ps=conn.prepareStatement("UPDATE [YourDatabaseName].[schema].products SET stock=? WHERE id=?"); 

将您的值放在需要的地方(标准默认架构是“dbo”,例如 ProductsDatabase.dbo.products)

如果这有效,那么您的连接字符串不正确

于 2012-05-16T14:05:58.517 回答
0

通常,如果表不存在,或者连接字符串有错误,则会引发此异常。也许没有连接到正确的数据库?

于 2012-05-16T11:42:07.437 回答
0

我遇到了类似的问题。在我的情况下,问题的原因是运行报告的用户的 DEFAULT_DATABASE 指向主数据库,在将其更改为正确的数据库后,它能够找到对象。

谢谢

于 2017-04-24T15:00:03.080 回答