Java exceptions.MySQLSyntaxErrorException:您的SQL语法有错误;请查看与MySQL服务器版本对应的手册,以了解在第1行的“?,?,?,?,,?,,,”附近使用的正确语法。不幸的是,我不知道,但是我需要在插入查询中进行更改吗?

Java exceptions.MySQLSyntaxErrorException:您的SQL语法有错误;请查看与MySQL服务器版本对应的手册,以了解在第1行的“?,?,?,?,,?,,,”附近使用的正确语法。不幸的是,我不知道,但是我需要在插入查询中进行更改吗?,java,mysql,arraylist,indexoutofboundsexception,Java,Mysql,Arraylist,Indexoutofboundsexception,exceptions.MySQLSyntaxErrorException:您的SQL语法有错误;请查看与MySQL服务器版本对应的手册,以了解在第1行的“?,?,?,?,,?,,,”附近使用的正确语法。不幸的是,我不知道,但是我需要在插入查询中进行更改吗?它有什么?在values(?,)字段中。我尝试过这种方法,但现在它为com.mysql.jdbc.exceptions.MySQLSyntaxErrorException提供了一个错误:您的SQL语法中有一个错误;请查看与MySQL服务器版本对



exceptions.MySQLSyntaxErrorException:您的SQL语法有错误;请查看与MySQL服务器版本对应的手册,以了解在第1行的“?,?,?,?,,?,,,”附近使用的正确语法。不幸的是,我不知道,但是我需要在插入查询中进行更改吗?它有什么?在values(?,)字段中。我尝试过这种方法,但现在它为com.mysql.jdbc.exceptions.MySQLSyntaxErrorException提供了一个错误:您的SQL语法中有一个错误;请查看与MySQL服务器版本对应的手册,以了解第1行中“?,?,?,,?,,,,”附近使用的正确语法。我不知道,很遗憾,感谢您的帮助。我正在试穿。如果发现任何困难,将通知您。我在内部for循环中,
'for(List values;lstUnique.size()){//use for each for rows for for(int i=0;iSorry,我的错。编辑了答案。哦,我的错。没有注意到这么简单的事情。非常感谢。重试。感谢您的帮助。我正在尝试。如果我发现任何困难,将通知您。我在内部for循环中遇到错误,
”for(列表值;lstUnique.size()){//for for for for for的每行使用(int i=0;iSorry,我的不好。编辑了答案。哦,我的不好。我没有注意到这么简单的事情。非常感谢。再试一次。谢谢你的帮助。+1。我知道这一点。但我用java做这件事,因为我实际上想从我庞大的数据库中找到唯一的记录。所以我将数据放入resultset,然后将其添加到列表中,通过列表,我将在表中插入第一行,然后将每一行与表中的现有行进行比较,看它们是否重复,如果重复,则不插入该记录,如果部分重复,则更新表中的现有记录,否则将插入该行。不客气。如果只是关于数据,则可以确保唯一性SQL也使用了
DISTINCT
关键字。更新了我的答案。//顺便说一句,你也可以用Java解决方案来实现。我也尝试了DISTINCT,但我的数据非常糟糕。所以问题是,如果field1、field2、f3在一行中,而firld1、field4、field5在另一行中,它没有给我唯一的记录。实际上,其中有45列那个数据库。太乱了。它们是数据存储的方式,很难用SQL找到唯一的记录。啊。好的。从你问题中的代码中看不到这一点。这可能会使SQL变得困难。是的。这对我来说是一个巨大的挑战。谢谢你的帮助。+1。我知道这一点。但我用java做这件事,因为我实际上,我想从我庞大的数据库中找到唯一的记录。所以我将数据放入resultset,然后将其添加到列表中,通过列表,我会将第一行插入表中,然后我会将每一行与表中的现有行进行比较,看它们是否重复,如果是,那么我不会插入这样的记录,如果部分重复,那么我会更新我的表的现有记录,否则我将插入该行。不客气。如果只是关于数据,您也可以使用SQL确保唯一性,使用
DISTINCT
关键字。更新了我的答案。//顺便说一句,您也可以用Java解决方案这样做。我也尝试过DISTINCT,但我有非常糟糕的数据。所以问题是,如果field1、field2、f3当firld1,field4,field5在另一行时,它没有给我唯一的记录。实际上数据库中有45列。太乱了。数据存储的方式,很难用SQL找到唯一的记录。啊。好的。从你问题中的代码中看不到这一点。这可能会给SQL带来困难。是的。这对我来说是一个巨大的挑战。
List lstUnique=new ArrayList<Object>();
//code to feed the data into list from resultset.
try{          
    Class.forName("com.mysql.jdbc.Driver");
    con=DriverManager.getConnection("jdbc:mysql://localhost:3306/MYdb","root","");
    stmt=con.createStatement();
    String sql1="select SourceFrom,Updated,Location_Type,Industry,ET_Rank,BT_Rank from mytable";
    rs1=stmt.executeQuery(sql1);
    rsmd=rs1.getMetaData();
    columnNumber=rsmd.getColumnCount();

    while(rs1.next()){
       lstUnique.add(rs1.getString("SourceFrom")+","+rs1.getString("Updated")+","+rs1.getString("Location_Type")+","+
                 rs1.getString("Industry")+","+rs1.getString("ET_Rank")+","+rs1.getString("BT_Rank")); 
    }
    String insertsql="";
    String SourceFrom=lstUnique.get(0).toString(); //its first column of the table.
    insertsql="Insert into java_uniquedata (SourceFrom,field2,field3,field4,field5) values(?,?,?,?,?)";
    PreparedStatement ps=con.prepareStatement(insertsql);

    //I tried this way also.
    for(int i=0;i<lstUnique.size();i++){
        SourceFrom=lstUnique.get(i).toString();
    }
    for(int i=0;i<lstUnique.size();i++){
        System.out.println("\n" + lstUnique.get(i).toString());
    }
    rs1.close();
    con.close();
}catch(Exception e){
    System.out.println(e);
}
ArrayList<String> lis = new ArrayList<String>();
lis.add("pare1");
lis.add("2");

//code to feed the data into list from resultset.
Class.forName("com.mysql.jdbc.Driver"); 
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "paresh");
String insertsql="";
insertsql="Insert into stud (name,age) VALUES (?,?)";
PreparedStatement ps=connection.prepareStatement(insertsql);
System.out.println(lis.get(0).toString());
ps.setString(1, lis.get(0).toString());
ps.setInt(2, Integer.parseInt(lis.get(1)));
System.out.println(ps);
ps.execute(insertsql);
for(int i=0; i < lstUnique.size();i++){
     ps.setString(1, lstUnique.get(i).toString());
}
ps.execute(insertsql);
List<List<String>> lstUnique=new ArrayList<>();  // note the List of List    
try {          
    /* ... your database query here ... */

    while(rs1.next()){
       List<String> values = new ArrayList<>(); // create list for values
       values.add(rs1.getString("SourceFrom"));
       values.add(rs1.getString("Updated"));
       values.add(rs1.getString("Location_Type"));
       values.add(rs1.getString("Industry"));
       values.add(rs1.getString("ET_Rank"));
       values.add(rs1.getString("BT_Rank"));
       lstUnique.add(values);  // add values for each row
    }

    String insertsql="Insert into java_uniquedata (SourceFrom,field2,field3,field4,field5) values(?,?,?,?,?)";
    PreparedStatement ps=con.prepareStatement(insertsql);
    for(List<String> values : lstUnique) { // use for each for rows
        for(int i=0;i<values.size();i++) { // set argument values to prepared statement
            ps.setString((i+1), values.get(i));
        }
        ps.execute(); // execute insert statement
    }
    ps.close();
} catch(Exception e){
    System.out.println(e);
} finally {  // close recordset and connection in finally-block! (or use 'try-with-resource'!)
    rs1.close();
    con.close();
}
INSERT INTO java_uniquedata (SourceFrom, field2, field3, field4, field5) 
    SELECT DISTINCT SourceFrom, Updated, Location_Type, Industry, ET_Rank, BT_Rank 
    FROM mytable;