Консультируйся java sql

Я программирую с Java. Я новый в этом языке. То, что он перемещает, состоит в том, что я делаю insert в таблицу в MySQL, но появляется у меня:

SQLException: Unknown column 'jose' in 'field list'

В самом деле, я напечатал SQL и это выполнил в PhpAdmin и функционируй. Они знают, почему происходит это? Внизу я оставляю им код.

 private void btn_ingresarMouseClicked(java.awt.event.MouseEvent evt) {                                          
 /* Insumo obj= new Insumo();
obj.setDescripcion(txtrut.getText());
     JOptionPane.showMessageDialog(null, obj.getDescripcion());*/
String name=txtrut.getText();
String pass=jPasswordField1.getText();
String sql="INSERT INTO usuario values(1,"+name+","+pass+")";
  try {
Class.forName("com.mysql.jdbc.Driver").newInstance();
 System.out.println("Registro exitoso");

} catch (Exception e) {

System.out.println(e.toString());

   }

    Connection con= null;

try {

      con = DriverManager.getConnection(
        "jdbc:mysql://localhost:3306/ropa_trabajo?"
        + "user=root&password=");

// Otros y operaciones sobre la base de datos...
 Statement sentencia=con.createStatement();
sentencia.executeUpdate(sql);
con.close();
    } catch (SQLException ex) {

// Mantener el control sobre el tipo de error
 System.out.println("SQLException: " + ex.getMessage());

}

    System.out.println(sql);
}                         
0
задан 31.12.2016, 05:52
1 ответ

Ошибка происходит, потому что, приложив твои переменные прямо в цепь SQL:

String sql="INSERT INTO usuario values(1,"+name+","+pass+")";

... вытекающий SQL не включает простые кавычки около стоимости. Вероятно, insert заканчивается чем-то похоже в:

INSERT INTO usuario values(1,jose,password)

Как jose не будь окружен простыми кавычками, MySQL принимает, что jose это имя колонны.

Конечно, ты мог добавлять кавычки, которых нет. Но истинное решение состоит в том, чтобы использовать один PreparedStatement и использовать параметры.

Пример:

String sql = "INSERT INTO usuario values(1,?,?)";
PreparedStatement sentencia = con.prepareStatement(sql);
sentencia.setString(1, name);
sentencia.setString(2, pass);
sentencia.executeUpdate();
1
ответ дан 03.12.2019, 17:54
  • 1
    он извиняет мое неведение, но то, что это в insert, это вопросительные знаки. поскольку оно функционирует, у меня выходит ошибка синтаксиса –  31.12.2016, 05:52
  • 2
    SQLException: You have an ошибка in your SQL syntax; check the учебник that corresponds to your MySQL server версия for the right syntax to использовал near '??) ' at line 1 INSERT INTO пользователь оцени (1??) –  31.12.2016, 05:52
  • 3
    уже я я функционирую, у него была в executeupdate также переменная sql, консультация, если я хочу напечатать sql, но что у меня появились параметры вместо вопросительных знаков, как он делается. –  31.12.2016, 06:01
  • 4
    конечно большое спасибо. –  31.12.2016, 06:02
  • 5
    Протестируй следующее, чтобы видеть SQL без знаков interrogació n: System.out.println(sentencia);. –  31.12.2016, 06:12

Смени эту линию cГіdigo

String sql="INSERT INTO usuario values(1,"+name+","+pass+")";

На эту:

String sql="INSERT INTO usuario values(1,'"+name+"','"+pass+"')";

*Nota: Добавьте простые кавычки к твоим переменным. Это правило SQL, чтобы вводить varchar/texto/cadenas/caracteres (как ты предпочел называть это).

0
ответ дан 24.11.2019, 11:48

Теги

Похожие вопросы