我想读取txt文件内容并将其插入到我的sql表中。
我是通过编码完成的,但它显示出一些错误。也通过查询尝试,但它在表中显示为null。
查询 -
INSERT INTO patent_uspto_tmp (pinv) VALUES (LOAD_FILE('/home/gaurav/Documents/pinv.txt'));
代码 -
try{
String arr[]=null;
String outputFile = "/home/gaurav/Documents/pinv.txt";
FileReader fileReader = new FileReader(outputFile);
BufferedReader bufferedReader = new BufferedReader(fileReader);
String inputLine;
List<String> lineList = new ArrayList<String>();
while ((inputLine = bufferedReader.readLine()) != null) {
lineList.add(inputLine);
}
fileReader.close();
Class.forName("com.mysql.jdbc.Driver");
Connection con=DriverManager.getConnection(
"jdbc:mysql://localhost:3306/patent","root","india2000");
for (int i = 1;i<outputFile.length();i++)
{
arr[i]=outputFile.valueOf(i);
PreparedStatement ps = (PreparedStatement) con.prepareStatement("insert into patent_uspto_tmp (pinv) values(?)");
ps.setString(1,arr[i]); // set the param here with the some value
ps.executeUpdate();
con.commit();
con.close();
}
}
catch(Exception e)
{
throw new RuntimeException(e);//System.out.println(e);
}
}
}
error - null pointer exception
答案 0 :(得分:1)
尝试使用PreparedStatement
和executeUpdate()
以及最后的commit()
方法:
PreparedStatement ps = con.prepareStatement("insert into patent_uspto_tmp (pinv) values(?)");
ps.setString(1, "value");// set the param here with the some value
ps.executeUpdate();
con.commit();
答案 1 :(得分:0)
为什么使用ResultSet
进行插入查询。 ResultSet
从db获取数据。您必须使用statement.executeUpdate(sql)
Statement stmt=con.createStatement();
System.out.println("Inserting records into the table...");
stmt = conn.createStatement();
String sql = "INSERT INTO table" +
"VALUES (100, 'Zara', 'Ali', 18)";
stmt.executeUpdate(sql);
用于读取文件然后插入db。您可以逐行读取文件并存储到String arr[]
中,然后将插入查询中的值传递为arr[i]
;
答案 2 :(得分:0)
您正在将动态参数传递给Statement,而不是为该动态参数设置任何值。请改用预处理语句,并将动态值作为参数传递给查询。