Java 执行插入时发生异常

Java 执行插入时发生异常,java,sql,sql-server,Java,Sql,Sql Server,我想做一个insert语句,它以批量/集方式而不是单例/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.prepa

我想做一个insert语句,它以批量/集方式而不是单例/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();
}

我假设您使用的是SQLServer2000或SQLServer2005。您尝试使用的
VALUES(),()
构造是在SQL Server 2008中引入的。因此,您必须根据以下内容更改正在生成的查询:

INSERT ... VALUES(), (), ();
为此:

INSERT ... VALUES();
INSERT ... VALUES();
INSERT ... VALUES();
或:

或者查看SQLBulkCopy


或者,我想您可以升级。

您使用的是什么版本的SQL Server?为什么很多人会将SQL Server和MySql同时标记?@Raj。但是。。。您介绍的不是批量查询。。。我是说这需要很多次。。不是吗?T^T@ChangukShin您是在试图解决语法错误,还是试图让代码运行得更快?让我们一次处理一个问题,好吗?我使用JDK1.6(OSX的原因)。。。我可以一次插入每一行。但这需要很多时间,所以我想让它更快。。。我可以给你看最后的代码。。。我想让你生气。对不起,我想我的jdk或其他东西不能做我的语法,你说的。
INSERT ... VALUES();
INSERT ... VALUES();
INSERT ... VALUES();
INSERT ... SELECT
UNION ALL  SELECT
UNION ALL  SELECT 
...