将txt文件写入mySQL数据库

时间:2017-11-13 21:30:52

标签: java mariadb

我目前正在尝试通过Java程序将txt文件写入mySQL数据库。我的数据库通过JDBC驱动程序正确连接,我可以通过程序创建表等。但是,当我尝试读取文本文件时,我收到此错误消息

  

java.sql.SQLException:您的SQL语法中有错误;查看与您的MariaDB服务器版本对应的手册,以获得在'' FName'附近使用的正确语法。 ,' SName' ,' DOB')价值观(' John',' McCullough'' 270696')'在第1行

我在SQL代码中找不到错误。这是该类的其余代码。任何帮助将不胜感激。

                try (Connection con = DriverManager.getConnection(dbUrl, dbUsername, dbPassword)) {
                FileReader file1 = new FileReader("resources/Test.txt");
                BufferedReader buffer1 = new BufferedReader(file1);
                String read;
                while ((read = buffer1.readLine()) != null) {
                    String[] row = read.split(",");
                    String fName = row[0];
                    String sName = row[1];
                    String DOB = row[2];
                    String insert = "INSERT INTO chessleague.table1 ('FName' , 'SName' , 'DOB') VALUES ('" + fName + "' , '" + sName + "' , '" + DOB + "')";

                    ps = con.prepareStatement(insert);

                    ps.executeUpdate();
                    ps.close();
                }
            } catch (Exception ex) {
                System.out.println(ex);
            }

1 个答案:

答案 0 :(得分:1)

如评论中所述,不要引用列名。

代码严重滥用预准备语句来执行简单的SQL。 Connection类有一个createStatement()方法,可以创建一个简单的语句,用于文本格式的SQL命令。

Statement stmt = con.createStatement();
stmt.execute("SELECT * from test.t1");

Prepared语句需要一个用于创建SQL语句的模板。这是一个如何使用预准备语句命令完成插入的示例。

try (PreparedStatement ps = con.prepareStatement("INSERT INTO chessleague.table1 (FName , SName , DOB) VALUES (?, ?, ?)")) {
    ps.setString(0, fName);
    ps.setString(1, sName);
    ps.setString(2, DOB);
    ps.execute();
} catch (SQLException ex) {
    System.out.println("SQLException: " + ex.getMessage());
}