java.sql.SQLException [Microsoft] [ODBC SQL Server Driver] [SQL Server] 对象名“表名”无效

Posted

技术标签:

【中文标题】java.sql.SQLException [Microsoft] [ODBC SQL Server Driver] [SQL Server] 对象名“表名”无效【英文标题】:java.sql.SQLException [Microsoft] [ODBC SQL Server Driver] [SQL Server] Invalid object name 'table name' 【发布时间】: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] 我得到了同样的错误 【参考方案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 指向主数据库,在将其更改为正确的数据库后,它能够找到对象。

谢谢

【讨论】:

以上是关于java.sql.SQLException [Microsoft] [ODBC SQL Server Driver] [SQL Server] 对象名“表名”无效的主要内容,如果未能解决你的问题,请参考以下文章

Oracle DB:java.sql.SQLException:关闭连接

Cause: java.sql.SQLException: 请求的转换无效 ; uncategorized SQLException for SQL []; SQL state [99999]; er

java.sql.SQLException: ORA-00604: 递归 SQL 级别 1 发生错误

Java:Sqlexception:位置不支持的 SQL92 令牌:178

java.sql.SQLException:接近“on”:语法错误问题

java.sql.SQLException:架构“ROOT”不存在