【发布时间】:2019-03-12 10:47:50
【问题描述】:
我对 Java 完全陌生,我尝试设置一个小测试来从 MSSQL 数据库中读取一些数据。我必须将一些值传递给查询,但这不能正常工作,如果我手动设置它们它可以工作,在我的情况下,使用 PreparedStatement 和 .setLong-Method 它不起作用。
public class db_testClass {
public static void main(String[] args) throws ClassNotFoundException {
long firstId = 0;
long lastId = 201801001010010403L;
PreparedStatement statement;
int counter = 1;
String SQL = "IF OBJECT_ID('tempdb..#tmpDaten') IS NOT NULL
" DROP TABLE #tmpDaten;
" SELECT DISTINCT
" RIGHT(10000000 + ISNULL(r.xxx, 0), 7) AS Wert
" INTO #tmpDaten
" FROM dbo.xxx
" WHERE r.xxxx BETWEEN firstId = ? AND lastId = ?;
" SELECT DISTINCT
" 'xxxx' AS Art ,
" t.xxx
" FROM #tmpDaten
" LEFT JOIN xxxxxxx a ON a.xxxx = t.xxxx
" AND a.ART = 'xxxx' " +
" WHERE a.xxxx IS NULL;";
String connectionUrl = "jdbc:sqlserver://xxxxxx:1433;databaseName=xxxxxx;integratedSecurity=true;";
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
try {
Connection con = DriverManager.getConnection(connectionUrl);
statement = con.prepareStatement(SQL);
statement.setLong(1, firstId);
statement.setLong(2, lastId);
System.out.println(statement);
ResultSet rs = statement.executeQuery();
}
catch (SQLException e) {
e.printStackTrace();
}
}
}
错误说'='附近有错误的语法......
有人有什么想法吗?
谢谢,
丹尼尔
【问题讨论】:
-
当您说“不起作用”时,您是什么意思?你得到一个错误?如果是这样,请将其包含在您的问题中。如果不是,请解释什么不起作用。
-
无法从
executeQuery()调用DROP TABLE命令,该命令仅适用于select语句。此外,您可能应该将您的查询分解成单独的部分。
标签: java sql-server prepared-statement