即使我的查询在SQL Management Studio中运行,我在准备好的语句中也遇到语法错误。我正在使用GlassFish 4.1.1。我在做什么错了?
我尝试过一点语法转换,但是我总是遇到错误。
这是我的连接池代码:
try {
InitialContext ic = new InitialContext();
dataSource = (DataSource) ic.lookup("java:comp/env/" + database);
} catch (Exception ex) {
ex.printStackTrace();
}
这是我的查询代码:
ConnectionPool pool = new ConnectionPool("BoxPointHAMBURGO");
Connection connection = pool.getConnection();
PreparedStatement ps = null;
ResultSet rs = null;
try {
String query = "SELECT Tabla FROM BoxPointHAMBURGO.dbo.NombresTablas";
ps = connection.prepareStatement(query);
rs = ps.executeQuery();
} catch (Exception ex) {
System.err.println("Error: " + ex.getMessage());
}
我得到的错误是:
Syntax error: Encountered "." at line 1 column 39.
答案 0 :(得分:1)
根据this answer,双点..
运算符将导致用于查询的当前数据库用户的默认架构。但是,您不应期望使用JDBC时SQL Management Studio查询语法会起作用。这是两个完全不同的驱动程序接口,具有不同的限制,而JDBC最有可能是限制性更强的。
建立JDBC连接时,您可能应该选择BoxPointHAMBURGO
数据库。您必须按照Building the Connection URL修改JDBC URL,语法为:
jdbc:sqlserver://localhost;databaseName=BoxPointHAMBURGO
,然后从SQL查询中删除数据库名称:
SELECT Tabla FROM dbo.NombresTablas
请注意,dbo
模式can only be accessed by the user that is the database owner下的表。