Ошибка «Количество столбцов не соответствует значению в строке 1» в программе - PullRequest
3 голосов
/ 15 декабря 2011

Я вставляю значения в базу данных, но получаю сообщение об ошибке «Счетчик столбцов не соответствует значению счетчика значений в строке 1».

try {
    Class.forName("com.mysql.jdbc.Driver");
    connection = DriverManager.getConnection(connectionURL, "root", "root");
    String sql = "insert into login(username,password) values(?,?)";
    PreparedStatement pst = connection.prepareStatement(sql);
    pst.setString(1, username);
    pst.setString(2, password);

    int numRowsChanged = pst.executeUpdate();
    out.println(" Data has been submitted ");

    pst.close();
} catch (ClassNotFoundException e) {
    out.println("Couldn't load database driver: " + e.getMessage());
} catch (SQLException e) {
    out.println("SQLException caught: " + e.getMessage());
} catch (Exception e) {
    out.println(e);
} finally {
    try {
        if (connection != null)
            connection.close();
    } catch (SQLException ignored) {
        out.println(ignored);
    }
}

Это моя таблица в базе данных MySql:

           +----------+-------------+------+-----+---------+-------+
           | Field    | Type        | Null | Key | Default | Extra |
           +----------+-------------+------+-----+---------+-------+
           | username | varchar(20) | YES  |     | NULL    |       |
           | password | varchar(15) | YES  |     | NULL    |       |
           +----------+-------------+------+-----+---------+-------+

Почему я получаю эту ошибку? Что-то не так в моем коде? Пожалуйста, помогите мне .......

Ответы [ 4 ]

0 голосов
/ 31 января 2012

На самом деле эта ошибка возникает, когда количество предоставленных значений и количество столбцов не совпадают.(то есть) вставка в таблицу (col1, col2) значений (val1) и вставка в таблицу (col1) значений (val1, val2) приведет к одной и той же ошибке.

Я попробовал ваш код, и он отлично работает с Oracle.Таким образом, вы можете проверить наличие орфографических ошибок в именах столбцов.

0 голосов
/ 15 декабря 2011

Ошибка сама по себе ошибочная, вероятно, так как все выглядит хорошо.Может быть, первичный ключ таблицы login не определен ( username )?Я вижу, имя пользователя имеет значение nullable.

0 голосов
/ 15 декабря 2011

Другой подход, неподготовленное утверждение может дать идею.

String sql = "insert into login(username, password) values('"
        + username + "', '" + password + "')";
System.out.println("sql = " + sql);
Statement pst = connection.createStatement();
pst.execute(sql);

Если ничего не помогает, создайте новую таблицу xxx и попробуйте все на этом.

0 голосов
/ 15 декабря 2011

возможно, столбцы имеют неправильные имена в sql String.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...