输入从文件中取出的数组到数据库表中

时间:2016-07-12 17:21:33

标签: java mysql arrays

我的目标是获取文件并从文件中拆分值并将值输入数据库表。

我创建了一个包含两列empp的示例表empname, empid。我连接到数据库并尝试从'eclipse'插入查询。

现在我有了文件fr.txt。当我读取文件,拆分值并将其存储在数组中时,我无法在插入查询中使用数组索引。

这是我的代码:

try{
    FileReader fr=new FileReader("C:\\Users\\Priyanka Sethi\\Desktop\\fr.txt");
    BufferedReader br=new BufferedReader(fr);
    String str;
    str=br.readLine();
    while((str=br.readLine())!=null){
        System.out.println(str+"\n");       
        String [] array = str.split("\\,");
        for (int i = 0; i < array.length; i++) {
            System.out.println(array[i]); 
        }
        String a=array[0];
        Integer b=Integer.parseInt(a);
        String c=array[1];
        Connection con=getConnection();
        PreparedStatement posted=con.prepareStatement("INSERT INTO empp(empid,empname)VALUES(b,'c')");
        posted.executeUpdate();
    }
} catch(Exception e){
    System.out.println(e);
} finally {
    System.out.println("insertion completed");
}

1 个答案:

答案 0 :(得分:2)

问题在于您如何尝试将值放入PreparedStatement

你有:

PreparedStatement posted=con.prepareStatement("INSERT INTO empp(empid,empname)VALUES(b,'c')");

...实际上并没有使用您在上面的行中创建的变量bc。相反,请尝试使用PreparedStatement.setString(int, String)PreparedStatement.setInt(int, int)方法。

如需完整示例,请查看以下内容: http://www.tutorialspoint.com/javaexamples/jdbc_prepared_statement.htm

在您的情况下 - 没有实际运行您的代码进行测试 - 我会将该行更改为如下所示:

PreparedStatement posted=con.prepareStatement("INSERT INTO empp(empid,empname)VALUES(?,?)");
posted.setInt(1, b.intValue());
posted.setString(2, c);

声明

始终,始终始终验证,清理等等来自用户的输入。切勿直接使用从程序外部提供的任何查询中的值,并且不要对用户将输入的内容做出任何假设。这样做可以让您了解各种漏洞。从一开始就使用好的做法很重要!