Almacenar JTextArea desde Swing en una base de datos de Access 2007

Actualmente estoy escribiendo una aplicación en Java que preforma la entrada / salida de / a los componentes de Swing GUI y almacena / recupera estos datos de una base de datos local de Microsoft Access 2007. Todo va bien, excepto cuando trato de actualizar un registro con entrada proveniente de un JTextArea que se almacenará en un campo de Texto o Memo. Puedo recibir información de una multa JTextField, pero obtengo una "SQLException: error de sintaxis en la instrucción UPDATE". con un JTextArea.

Aquí está el código que tiene el problema:

/* <in_some_method> */
myJTextArea.setText(someString); // the components can have the exact
myJTextField.setText(someString); // same string and still have problems

saveEdit(myTable, myColumn, myJTextField.getText(), myID); // this works fine
saveEdit(myTable, myColumn, myJTextArea.getText(), myID); // this throws an exception
/* </in_some_method> */

/* the update method */
public void saveEdit(String table, String column, String value, long id) {
    String query = "UPDATE " + table + " ";
    query += "SET " + column + " = '" + value + "', "
    query +=  "UpdatedAt = Now() ";
    query += "WHERE ID = " + id;

    try {
        // conn is a working connection to the database
        Statement s = conn.createStatement();

        // execute the query
        s.executeUpdate(query);

        // close open database handle
        s.close();

    } catch (Exception ex) {
        System.err.println(ex);
    }
}

Un par de cosas:

  • No creo que exista con el tipo de datos del campo en la base de datos; He intentado tanto Memo como Texto para el tipo y ambos funcionan con JTextField y ninguno funciona con JTextArea.

  • La excepción, como ya se dijo, es "SQLException: error de sintaxis en la instrucción UPDATE". así que sé que mi problema no tiene nada que ver con el diseño de la tabla de la base de datos; la tabla y las columnas solicitadas existen y se puede acceder a ellas.

¿Alguien tiene ideas? Cualquier ayuda será apreciada.

Respuesta 1

No sé qué someStringes, pero apuesto a que contiene nuevas líneas o algo así, por lo que al configurarlo JTextFieldse "aplanará" mientras que al configurarlo JTextAreano lo hará. Entonces, al obtener, tendrá dos cadenas diferentes, una que funcionará bien y otra que causará un error de sintaxis.

Cualquiera sea el caso, debe escapar de sus cadenas antes de guardarlas en la base de datos, o corre el riesgo de inyección SQL . Esto también asegurará que su método funcione bien para ambos componentes (aunque la cadena exacta puede ser diferente, por la razón indicada anteriormente).

Respuesta: 2

OK, entonces soy completamente nuevo en los sockets Java, realmente no conozco el problema y mi buen amigo me dijo que publicara esto aquí. Cliente: http://www.pastie.org/4163360 Servidor: http://www.pastie.org/4163364 ...

Tengo que construir un servicio web con certificado digital, pero no tengo experiencia en esta área, obtuve algunos ejemplos, pero todavía no fue suficiente. En el siguiente código puedo obtener un público y ...

Me encuentro con un problema, supongo que tiene que ser fácil de resolver, pero estoy atascado. Este es mi fragmento de código: String url = UriComponentsBuilder.fromPath ("http: // localhost") .build (). ToUriString (); ...

Cómo imprimir ambos en Log.e / d / etc. y a System.out / err / etc.? Tengo un código que pruebo en el escritorio y, a veces, lo uso en Android y también quiero ver registros allí.