我想从txt文件中读取数据并将其插入到我的数据库中,但我的代码只插入16行并停止。 txt文件有200行。 我不知道自己做错了什么。 任何帮助将不胜感激。提前致谢
这是我的代码:
public static void main(String[] args) throws ClassNotFoundException, SQLException
{
String date;
String heure;
String parametre;
String valeur;
PreparedStatement ps = null;
Connection con = null;
ResultSet rs = null;
try
{
BufferedReader br = new BufferedReader(new FileReader("Data_Station_1.txt"));
String username = "postgres";
String pwd = "elghorrim";
String connurl = "jdbc:postgresql://localhost:5432/BDS_CSF_AuqliteEau";
con = DriverManager.getConnection(connurl, username, pwd);
Class.forName("org.postgresql.Driver");
String line = null;
while ((line = br.readLine()) != null)
{
String tmp[] = line.split(",");
date = tmp[0];
heure = tmp[1];
parametre = tmp[2];
valeur = tmp[3];
System.out.println(date + "\t" + heure + "\t" + parametre + "\t" + valeur);
String sql =
"INSERT INTO resultat (date_resultat,valeur,code_pc,code_parametre,heure_resultat) values ('"
+ date + "','" + valeur + "','1','" + parametre + "','" + heure +
"')";
ps = con.prepareStatement(sql);
ps.executeUpdate();
}
br.close();
con.close();
ps.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
答案 0 :(得分:0)
你的代码看似可行,不是最好的方法,但应该有用。
您没有对该文件进行任何类型的验证,我的猜测是该文件存在问题。我无法确定,因为你没有发送文件。
一些建议:
创建一个连接类,这样您就不需要数据库用户,密码等......每次需要做一些与数据库相关的事情。
连接池也很棒。
干杯!!!
//使用示例更新:
//create a class that will open your connection and do other sql stuff for you
//so you busineess rules will be more readable
SQLHelper sqlHelper = new SQLHelper();
sqlHelper.startCON();
String line = null;
while((line=br.readLine()) != null){
String[] tmp=line.split(",");
//I will check here the size of the line readed, I do not know how is a common size so I am using 10 chars,
//change it as your needs, you also need to validate is the split worked and found your 4 fields
if(line.length()>9 && tmp.length==4)
{
sqlHelper.toResultat(tmp);
}