Java 在SQL中运行的准备语句中出现语法错误

Java 在SQL中运行的准备语句中出现语法错误,java,sql-server,jdbc,prepared-statement,Java,Sql Server,Jdbc,Prepared Statement,即使我的查询在SQL Management Studio中运行,我在准备好的语句中也会出现语法错误。我使用的是GlassFish 4.1.1。我做错了什么 我试着改变一下语法,但总是出错 以下是我的连接池代码: 试一试{ InitialContext ic=新的InitialContext; dataSource=dataSource ic.lookupjava:comp/env/+数据库; }捕获异常{ 例如,打印跟踪; } 这是我的查询代码: ConnectionPool pool=新的Co

即使我的查询在SQL Management Studio中运行,我在准备好的语句中也会出现语法错误。我使用的是GlassFish 4.1.1。我做错了什么

我试着改变一下语法,但总是出错

以下是我的连接池代码:

试一试{ InitialContext ic=新的InitialContext; dataSource=dataSource ic.lookupjava:comp/env/+数据库; }捕获异常{ 例如,打印跟踪; } 这是我的查询代码:

ConnectionPool pool=新的ConnectionPoolBoxPointHAMBURGO; 连接=pool.getConnection; PreparedStatement ps=null; 结果集rs=null; 试一试{ 字符串查询=从BoxPointHAMBURGO.dbo.NombresTablas中选择Tabla; ps=connection.prepareStatementquery; rs=ps.executeQuery; }捕获异常{ System.err.printlnError:+ex.getMessage; } 我得到的错误是:

Syntax error: Encountered "." at line 1 column 39.
根据双点。。运算符将生成用于查询的当前数据库用户的默认架构。但是,在使用JDBC时,您不应该期望SQL Management Studio查询语法会起作用。这是两个具有不同限制的完全不同的驱动程序接口,JDBC很可能限制更大

在建立JDBC连接时,您可能应该选择BoxPointHAMBURGO数据库。您必须按照以下语法修改JDBC URL:

jdbc:sqlserver://localhost;databaseName=BoxPointHAMBURGO 然后从SQL查询中删除数据库名称:

从dbo.NombresTablas中选择Tabla
请注意dbo模式下的表。

为什么有两个点?就像在本例中使用.dbo.NombresTablas一样,该点也会在Java代码中给我一个错误,但在SQL管理研究中没有。MAINDB值是多少?这是一个非空常数吗?您能添加整个查询变量值吗?@KarolDowbecki是的,MAINDB是BoxPointHAMBURGO,我将编辑我的question@KarolDowbecki是的,我在my context.xml中有这个URL。我从查询中删除了数据库,但这给了我一个新的错误,即架构“DBO”不存在,即使我确信它确实存在。根据链接的答案,用于打开数据库连接的用户不是数据库所有者,因此它无法看到DBO。objects.re:双点。。运算符将导致查询使用默认dbo模式-否,它将导致有效模式被指定为当前数据库用户的默认模式。通常是dbo,但并不总是这样。