【问题标题】:java.sql.SQLException [Microsoft] [ODBC SQL Server Driver] [SQL Server] Invalid object name 'table name'java.sql.SQLException [Microsoft] [ODBC SQL Server Driver] [SQL Server] 对象名“表名”无效
【发布时间】:2012-05-16 11:35:19
【问题描述】:

当我使用 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 天开始就在这部分工作。我将如何解决这个异常?

【问题讨论】:

  • 您确定您的数据库中有表产品吗?
  • 尝试 UPDATE [products] 看看它是否有效
  • 也许您选择了错误的数据库?你能说明连接是如何创建的吗?
  • 是的,我确信我的数据库有产品表
  • 我已经使用了那个 UPDATE[products] 我得到了同样的错误

标签: java sql-server jdbc


【解决方案1】:

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

  • 您正在连接到不同的数据库
  • 表已删除
  • 该表位于另一个数据库架构中
  • 您的用户不再拥有对该表的读取权限

【讨论】:

  • 表存在,数据库也一样,但仍然报错。
  • 这里我用的是windows认证有什么问题吗?
  • @pardhu:您的 Windows 用户在您的 MSSQL Server 中有权限吗?您可以检查您是否使用 MS SQL Studio 将该用户连接到您的数据库并尝试浏览您需要的表。
  • 我在浏览那个表,看那些数据都是可能的,那么我这里需要哪些权限呢?
  • @pardhu:你能显示你的连接字符串吗?您还确定该表在您用户的默认架构中吗?
【解决方案2】:

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

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

例如

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

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

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

【讨论】:

  • 我在这里使用这个查询“master.dbo.products”写我也遇到同样的错误。请帮助我
  • 产品表是在“主”数据库还是其他数据库中?我希望您为该表创建了一个新数据库,在这种情况下,您不应放置 master.dbo.products 而是 .dbo.products - 您能显示您的连接字符串吗?
【解决方案3】:

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

【讨论】:

  • 这里我用的是windows认证有什么问题吗?
【解决方案4】:

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

谢谢

【讨论】:

    猜你喜欢
    • 2018-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-14
    • 1970-01-01
    • 2019-12-09
    • 1970-01-01
    • 2021-10-21
    相关资源
    最近更新 更多