我想知道如何读取文件并插入到我的数据库中的表中。我写了这个:
String customerFile = "customer.txt";
Connection myConnect = ....
Statement mySt = myConnect.createStatement();
mySt.executeUpdate(..create customer table..);
int SSN;
String CNAME;
String GENDER;
int AGE;
String PROFESSION;
String line;
String[] tokens;
FileReader file1 = new FileReader(customerFile);
BufferedReader buffer1 = new BufferedReader(file1);
//throw away first line
line = buffer1.readLine();
//continue with rest of file
while((line = buffer1.readLine()) != null)
{
tokens = line.split(",");
SSN = Integer.parseInt(tokens[0]);
CNAME = tokens[1];
GENDER = tokens[2];
AGE = Integer.parseInt(tokens[3]);
PROFESSION = tokens[4];
String insertString = "insert into customer values ( " + SSN + ", " + CNAME + "," +
GENDER + ", " + AGE + ", " + PROFESSION +")";
mySt.executeUpdate(insertString);
}
我认为这是插入表格的正确方法。但是,我遇到的问题是变量没有以正确的方式被读取。
示例行:
3648993,Emily,male,63,Consulting
5022334,Barbara,male,26,Finance
通过上面的示例,我想要一个包含2行和5列的表,但是我放在顶部的代码在到达名称时给了我一个错误。我不确定问题出在哪里。
答案 0 :(得分:0)
您应该将insertString
替换为
myConnect = getConnection();
myConnect.setAutoCommit(false);
File file = new File(fileName);
fis = new FileInputStream(file);
pstmt = myConnect.prepareStatement("insert into customer( " + SSN + ", " + CNAME + "," +
GENDER + ", " + AGE + ", " + PROFESSION +") values (?,?,?,?,?)");
pstmt.setString(1, SSN);
pstmt.setString(2, AGE);
....
pstmt.executeUpdate();
myConnect.commit();
答案 1 :(得分:0)
确保在字符串字段周围加上引号,而不是:
String insertString = "insert into customer values ( " + SSN + ", " + CNAME + "," +
GENDER + ", " + AGE + ", " + PROFESSION +")";
做的:
String insertString = "insert into customer values ( " + SSN + ", '" + CNAME + "','" +
GENDER + "', " + AGE + ", '" + PROFESSION +"')";
答案 2 :(得分:-1)
通常我会分两步完成这些事情:
1)创建一个只代表文本文件一行的java类。这个类用txt文件中的一行进行实例化,解析了这一行并创建了字段,因此每个字段都有一个getter和一个具有正确字段类型的setter。在这个课程中,如果字段错误甚至是空的话,我可以执行测试和纠正措施。
2)我创建了一个Writer类,它逐行读取文本文件,并将每一行写入数据库,主要从第二行开始,因为第一行包含标题。我严格使用PreparedStatement并使用批处理,最后,当文件循环结束时,使用PreparedStatement.executeBatch()将批处理写入DB,然后关闭所有DB对象。