【问题标题】:Exception executing insert执行插入异常
【发布时间】:2013-11-14 04:35:41
【问题描述】:

我想创建一个以批量/集合方式而不是单例/RBAR 方式运行的插入语句。

我的 SQL 语法遇到异常,无法理解原因。

public void Insert_tag(ArrayList key, ArrayList key_tag, String[] tag, String[] make_key, String fname, int fseq, ArrayList khannTag)throws Exception{
    PreparedStatement prep = Local.prepareStatement("delete from tagDB where fname=? and fseq=?;");
    prep.setString(1,fname);
    prep.setInt(2,fseq);
    prep.execute();

    String query = "insert into tagDB values (?, ?, ?, ?, ?, 0, 0, 0, ?, ?, ?)";

    for(int i = 0 ; i < key.size()-1 ; i++ ) {
        query = query.concat(",(?, ?, ?, ?, ?, 0, 0, 0, ?, ?, ?)");
    }
    System.out.println(query);
    PreparedStatement prep3 = Local.prepareStatement(query); // <<<< Exception

    for(int n=0 ; n<key.size() ; n++) {
        prep3.setString(8*n+1, (String) key.get(n));
        prep3.setString(8*n+2, (String) key_tag.get(n));
        prep3.setString(8*n+3, (String) khannTag.get(n));
        prep3.setString(8*n+4, tag[n]);
        prep3.setString(8*n+5,make_key[n]);
        prep3.setString(8*n+6,fname);
        prep3.setInt(8*n+7,fseq);
        prep3.setInt(8*n+8,n);
    }

    prep3.executeUpdate();
    prep3.close();
    prep.close();
}

而且,我的日志在这里。

java.sql.SQLException: near ",": syntax error

【问题讨论】:

标签: java sql sql-server


【解决方案1】:

我假设您使用的是 SQL Server 2000 或 SQL Server 2005。您尝试使用的 VALUES(),() 构造是在 SQL Server 2008 中引入的。因此您将不得不更改查询你正在从这里构建:

INSERT ... VALUES(), (), ();

到这里:

INSERT ... VALUES();
INSERT ... VALUES();
INSERT ... VALUES();

或者:

INSERT ... SELECT
UNION ALL  SELECT
UNION ALL  SELECT 
...

或者查看 SQLBulkCopy。

或者,我想你可以升级。

【讨论】:

  • 但是……你介绍的不是批量查询……我的意思是它需要很多次……不是吗? T^T
  • @ChangukShin 您是在尝试解决您的语法错误,还是尝试让您的代码无法更快地运行?让我们一次处理一个问题,好吗?
  • 我使用 jdk 1.6(OS X 的原因)。
  • 啊...我可以一次插入每一行。但这需要很多时间,所以我想让它更快……我可以给你看最后的代码……我想让你生气。对不起。
  • 我觉得我的 jdk 什么的不能做我的语法,你说的。
猜你喜欢
  • 1970-01-01
  • 2017-11-01
  • 1970-01-01
  • 2013-04-02
  • 1970-01-01
  • 1970-01-01
  • 2012-03-15
  • 2019-05-06
  • 2012-11-23
相关资源
最近更新 更多