【问题标题】:Java PreparedStatement doesn´t set valueJava PreparedStatement 没有设置值
【发布时间】: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


【解决方案1】:

您对BETWEEN 运算符的使用是可疑的,可能只是完全违反了语法。它应该是这样的:

something BETWEEN low-value AND high-value

测试 something 是否介于 low-valuehi-value 值之间。

【讨论】:

  • 我终于用替换了“firstId =?”只是一个“?”它有效,谢谢!
  • 我怀疑这可能是解决方案。很高兴能提供帮助。
猜你喜欢
  • 2016-02-13
  • 2017-07-11
  • 2011-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-09
  • 1970-01-01
相关资源
最近更新 更多