-1

エラーは次のとおりです。

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: SQL 構文にエラーがあります。1 行目の ''3)' 付近で使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。

コードは次のとおりです。

fecha = +jFecha.getCalendar().get(Calendar.YEAR) + "-" + (jFecha.getCalendar().get(Calendar.MONTH) + 1) + "-" + jFecha.getCalendar().get(Calendar .DAY_OF_MONTH);
        System.out.println(fecha);
        String parte = cmbParte.getSelectedItem().toString();
        System.out.println(parte);
        試す {

            Conexion.ins.execute("レジストロに挿入(id_registro、ジョブ、ip、id_parte、fecha、id_inspector、id_descripcion、piezasrech、piezasinsp、id_disposicion、id_area、id_responsable、id_estacion)"
                    + "values(0,'" + txtOrder.getText() + "','" + txtIP.getText() + "','" + id_parte
                    + "','" + fecha + "','" + id_inspector + "','" + id_descripcion
                    + "','" + txtPR.getText() + "','" + txtPI.getText() + "','" + id_disposicion
                    + "','" + id_area + "','" + id_responsable + "','" + id_estacion + ");");

            JOptionPane.showMessageDialog(this, "Registro agregado con exito");

        } キャッチ (SQLException e) {
            JOptionPane.showMessageDialog(this, "Error al intentar agregar el Registro");
            System.out.println(e);
        }
    }
4

4 に答える 4

2

メソッドの現在の実装を削除し、代わりにConexion.ins.executea を使用するものに置き換えることをお勧めします。そうすれPreparedStatementば、この連結の問題を取り除くことができます。これは、維持が難しく、さらに悪いことに、SQL インジェクションを起こしやすいです。

PreparedStatementこれは、パラメーターに vararg 引数を使用した実装の例です。

public void execute(String query, Object ... params) throws SQLException {
    //assumes you already have your Connection
    PreparedStatement pstmt = con.prepareStatement(query);
    int i = 1;
    for(Object param : params) {
        pstmt.setObject(i++, param);
    }
    pstmt.executeUpdate();
    pstmt.close();
}

この実装により、あなたと同僚にとってより読みやすい方法でメソッドを呼び出すことができます。

String insertSQL = "insert into registros(id_registro, job, ip, id_parte, fecha,"
    + "id_inspector, id_descripcion, piezasrech, piezasinsp, "
    + "id_disposicion, id_area, id_responsable, id_estacion) "
    + "values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
Conexion.ins.execute(insertSQL,
    txtOrder.getText(), txtIP.getText(), id_parte, fecha,
    id_inspector, id_descripcion, txtPR.getText(), txtPI.getText(),
    id_disposicion, id_area, id_responsable, id_estacion);
于 2013-07-04T05:08:50.840 に答える
1

の id_estacion の後の閉じ括弧の前に <'>がないようなid_responsable + "','" + id_estacion + ");");ので、id_estacionを囲んでいません。

する必要がありますid_responsable + "','" + id_estacion + '");");

于 2013-07-04T05:01:45.497 に答える
0

クエリはこの文字列で実行されます

......,'3);

あなたが欠落しているため、これは間違っています。'したがって、それを削除するか'、最後に一致を追加してください。

あなたの文字列:

id_responsable + "','" + id_estacion + ");");

これを次のように変更するだけです:

id_responsable + "'," + id_estacion + ");");

また

id_responsable + "','" + id_estacion + "');");
于 2013-07-04T05:02:40.683 に答える
0
 + "','" + id_area + "','" + id_responsable + "','" + id_estacion + '");");

最後の行を変更

于 2013-07-04T05:05:11.130 に答える