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-valuehi-value[=19= 之间].