java – 无法在SQL Server中通过JDBC调用CREATE SCHEMA
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 无法在SQL Server中通过JDBC调用CREATE SCHEMA,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2475字,纯文字阅读大概需要4分钟。
内容图文
![java – 无法在SQL Server中通过JDBC调用CREATE SCHEMA](/upload/InfoBanner/zyjiaocheng/904/7c6c4d3937ed4336b5ad8676b33f0568.jpg)
我正在使用官方的SQL Server JDBC驱动程序:
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<version>6.2.0.jre8</version>
</dependency>
要在此处运行此代码:
try (Connection c = new com.microsoft.sqlserver.jdbc.SQLServerDriver().connect(u, p)) {
try (PreparedStatement s1 = c.prepareStatement("create schema x");
PreparedStatement s2 = c.prepareStatement("drop schema x")) {
System.out.println(s1.execute());
System.out.println(s2.execute());
}
}
但是我收到了这个错误:
com.microsoft.sqlserver.jdbc.SQLServerException: Incorrect syntax near the keyword 'schema'.
at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(SQLServerException.java:258)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQLServerStatement.java:1547)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(SQLServerPreparedStatement.java:528)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PrepStmtExecCmd.doExecute(SQLServerPreparedStatement.java:461)
at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:7151)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:2689)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeCommand(SQLServerStatement.java:224)
at com.microsoft.sqlserver.jdbc.SQLServerStatement.executeStatement(SQLServerStatement.java:204)
at com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.execute(SQLServerPreparedStatement.java:445)
很明显,这些陈述是正确的,它们作为静态陈述起作用:
try (Statement s1 = c.createStatement();
Statement s2 = c.createStatement()) {
System.out.println(s1.execute("create schema x"));
System.out.println(s2.execute("drop schema x"));
}
这是预期的,还是JDBC驱动程序中的错误?
解决方法:
这似乎是版本6.2.0中的回归.它曾用于6.1.0版.我已向Microsoft报告此问题:https://github.com/Microsoft/mssql-jdbc/issues/370
CREATE VIEW语句也受到影响:
// Works on both versions 6.2.0 and 6.1.0
try (Statement s1 = c.createStatement();
Statement s2 = c.createStatement()) {
System.out.println(s1.execute("create view x as select 1 a"));
System.out.println(s2.execute("drop view x"));
}
// Works only on version 6.1.0
try (PreparedStatement s1 = c.prepareStatement("create view x as select 1 a");
PreparedStatement s2 = c.prepareStatement("drop view x")) {
System.out.println(s1.execute());
System.out.println(s2.execute());
}
(我在Stack Overflow上记录了这个,因为运行DDL的几个工具,包括jOOQ,Hibernate,MyBatis,Flyway等可能会受到影响)
内容总结
以上是互联网集市为您收集整理的java – 无法在SQL Server中通过JDBC调用CREATE SCHEMA全部内容,希望文章能够帮你解决java – 无法在SQL Server中通过JDBC调用CREATE SCHEMA所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。