[英]Insert values of arraylist into mysql table
我正在尝试将arraylist中的值插入mysql表。
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);
}
但是我得到了错误
java.lang.IndexOutOfBoundsException:索引:1,大小:1
我的列表中只有一条记录,该记录共有5列的值。 您能指导我如何从arraylist获取第一条记录的值并将其插入到mysql表中。
您应该分隔插入语句的值。 使用自定义数据结构(类)或使用List<String>
。
这样的事情可能会起作用:
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();
}
我尝试了这个,它将数据插入数据库
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);
如果不是必须要用Java(?)解决的任务,则完全不同的解决方案:
由于代码示例给人以您正在读取和写入同一数据库的印象,因此您可能还考虑使用SQL INSERT-SELECT
语法在数据库中复制数据:
INSERT INTO java_uniquedata (SourceFrom, field2, field3, field4, field5)
SELECT DISTINCT SourceFrom, Updated, Location_Type, Industry, ET_Rank, BT_Rank
FROM mytable;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.