2

netbeans/windows 7 で Java を使用してアプリケーションを開発しています。SQL を使用して PreparedStatement でデータベースにデータを挿入しようとしていました。これが私のコードです。

private void addInfoActionPerformed(java.awt.event.ActionEvent evt) {                                        
    Connection conn;    
    PreparedStatement pst;
    String url = "jdbc:derby://localhost:1527/records";
    String SQL_INSERT = "INSERT INTO records"+
                "VALUES(?,?,?)";
    String name, surname, number;
    try {
        conn = DriverManager.getConnection(url, "system", "app");
        System.out.println("connected to db");
        pst = conn.prepareStatement(SQL_INSERT);
        name = nameField.getText();
        surname = surnameField.getText();
        number = numberField.getText();
        System.out.println("got data from textfields");
        pst.setString(1, name);
        pst.setString(2, surname);
        pst.setString(3, number);
        System.out.println("variables set");
        pst.executeUpdate();
        System.out.println("sql command executed");
        pst.close();
        conn.close();
    } catch (SQLException ex) {
        Logger.getLogger(addition.class.getName()).log(Level.SEVERE, null, ex);
    }

}  

しかし、次のようなエラーが発生しました。

java.sql.SQLSyntaxErrorException: 構文エラー: "?" が発生しました 1 行目、27 列目。

私のテーブルの名前は records で、名前が付けられた 3 つの列があります。名前、姓、番号。println 行からわかるように、その行には問題があります。

pst = conn.prepareStatement(SQL_INSERT);

または、SQL_INSERT 文字列と SQL コードを間違って作成した可能性があります。何が問題なのか正確にはわかりませんでした。

4

1 に答える 1

8

スペースがありません

String SQL_INSERT = "INSERT INTO records"+
            "VALUES(?,?,?)";

連結を行うと、生成されます"INSERT INTO recordsVALUES(?,?,?)"

に変更します

String SQL_INSERT = "INSERT INTO records"+
            " VALUES(?,?,?)";
于 2013-06-11T13:16:53.570 に答える