如何在java中将csv中的值插入数据库
我尝试了以下代码来分割csv值,现在如何将其插入到DB中?我是否已将值保存到单独的变量中以匹配列名?我搞不懂 注意:我现在不想使用任何csv解析器。我只想手工做如何在java中将csv中的值插入数据库,java,csv,Java,Csv,我尝试了以下代码来分割csv值,现在如何将其插入到DB中?我是否已将值保存到单独的变量中以匹配列名?我搞不懂 注意:我现在不想使用任何csv解析器。我只想手工做 public static void main(String[] args) throws IOException, ClassNotFoundException, SQLException { String name; String email; String phone;
public static void main(String[] args) throws IOException, ClassNotFoundException, SQLException {
String name;
String email;
String phone;
String ID;
Connection con = OracleDBConnection.getConnection();
String query = "Insert into NEWSTUDENT values(?,?,?,?)";
PreparedStatement st = con.prepareStatement();
st.executeUpdate(query);
try {
BufferedReader bReader = new BufferedReader(new FileReader("1000rows.csv"));
while (bReader != null) {
String read;
try {
read = bReader.readLine();
if (read != null)
{
String[] array = read.split(",+");
for(String result:array)
{
System.out.println(result);
}
}
} catch (IOException ex) {
ex.printStackTrace();
}
finally
{
if (bReader == null)
{
bReader.close();
}
}
}
} catch (FileNotFoundException ex) {
ex.printStackTrace();
}
}
}
输出:
1Kiriti
kiriti@gmail.com
880789939
数据库中的列名:
Name Email Phone ID
您可以将数据存储在数组中,并将其绑定到语句:
String query = "Insert into NEWSTUDENT values(?,?,?,?)";
PreparedStatement st = con.prepareStatement(query);
st.setString(1,array [0]);
st.setString(2,array[1]);
....
st.executeUpdate();
有关预处理语句的更多信息,请参见使用预处理语句并在while循环中构建查询并执行它。有关已准备好的报表的更多信息,请查看
您可以使用
Prepare语句
,并在每次迭代时在参数中设置值:
Connection con = OracleDBConnection.getConnection();
String query = "Insert into NEWSTUDENT values(?,?,?,?)";
PreparedStatement ps=con.prepareStatement(query);
ps.setString(1,array[0]);
ps.setString(2,array[1]); // and so on
ps.executeUpdate();
如果没有更多行,也可以使用批处理:
String sql = "Insert into NEWSTUDENT values(?,?,?)";
PreparedStatement preparedStatement = null;
try{
preparedStatement =
connection.prepareStatement(sql);
preparedStatement.setString(1, "Gary");
preparedStatement.setString(2, "Larson");
preparedStatement.setString (3, "Test");
preparedStatement.addBatch();
preparedStatement.setString(1, "Stan");
preparedStatement.setString(2, "Lee");
preparedStatement.setString (3, 456);
preparedStatement.addBatch();
int[] affectedRecords = preparedStatement.executeBatch();
}finally {
if(preparedStatement != null) {
preparedStatement.close();
}
}
使用PreparedStatement为什么没有解析器?这是家庭作业吗?如果不是,就使用解析器。写你自己的东西会让你以后遇到bug。我有大约1000行,你可以使用批处理!我的问题是,在循环时,如何将列放入循环中并与数组中的值进行匹配
String sql = "Insert into NEWSTUDENT values(?,?,?)";
PreparedStatement preparedStatement = null;
try{
preparedStatement =
connection.prepareStatement(sql);
preparedStatement.setString(1, "Gary");
preparedStatement.setString(2, "Larson");
preparedStatement.setString (3, "Test");
preparedStatement.addBatch();
preparedStatement.setString(1, "Stan");
preparedStatement.setString(2, "Lee");
preparedStatement.setString (3, 456);
preparedStatement.addBatch();
int[] affectedRecords = preparedStatement.executeBatch();
}finally {
if(preparedStatement != null) {
preparedStatement.close();
}
}