Java PreparedStatement 没有设置值
Java PreparedStatement doesn´t set value
我是 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();
}
}
}
错误说'='......附近有错误的语法
有人有什么想法吗?
谢谢,
丹尼尔
您对 BETWEEN
运算符的使用很可疑,可能只是完全违反语法。它应该是这样的:
something BETWEEN low-value AND high-value
测试 something 是否位于值 low-value 和 hi-value[=19= 之间].
我是 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();
}
}
}
错误说'='......附近有错误的语法
有人有什么想法吗?
谢谢,
丹尼尔
您对 BETWEEN
运算符的使用很可疑,可能只是完全违反语法。它应该是这样的:
something BETWEEN low-value AND high-value
测试 something 是否位于值 low-value 和 hi-value[=19= 之间].