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 而是如果表不存在,或者连接字符串有错误,通常会引发此异常。可能没有连接到正确的数据库?
【讨论】:
这里我用的是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