Куча ошибок после запуска моего кода - PullRequest
1 голос
/ 30 ноября 2011

Я пытался добавить пользователя в свою базу данных, используя Java с Spring Framework (Standalone), но я столкнулся с проблемами именно в этом коде

package test;
import dao.FinanceDao;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
public class TestDrive {

    public static void main(String[] args){

        FinanceDao finance = new FinanceDao();
        DriverManagerDataSource dataSource = new DriverManagerDataSource();
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:3306/payroll");
        dataSource.setUsername("root");
        dataSource.setPassword("123192");

        finance.setDataSource(dataSource);

        finance.Add("2010-01015", "51010");

    }
}

и после запуска я столкнулся с этими ошибками

Nov 30, 2011 12:40:14 PM org.springframework.jdbc.datasource.DriverManagerDataSource setDriverClassName
INFO: Loaded JDBC driver: com.mysql.jdbc.Driver
Nov 30, 2011 12:40:15 PM org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
INFO: Loading XML bean definitions from class path resource [org/springframework/jdbc/support/sql-error-codes.xml]
Nov 30, 2011 12:40:15 PM org.springframework.jdbc.support.SQLErrorCodesFactory <init>
INFO: SQLErrorCodes loaded: [DB2, Derby, H2, HSQL, Informix, MS-SQL, MySQL, Oracle, PostgreSQL, Sybase]
Exception in thread "main" org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; bad SQL grammar [INSERT INTO PERSON (empID,password) VALUES(?,?)]; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'empID' in 'field list'
    at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.translate(SQLErrorCodeSQLExceptionTranslator.java:230)
    at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:553)
    at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:738)
    at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:796)
    at org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java:804)
    at dao.FinanceDao.Add(FinanceDao.java:24)
    at test.TestDrive.main(TestDrive.java:17)
Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'empID' in 'field list'
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
    at com.mysql.jdbc.Util.getInstance(Util.java:386)
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1052)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3609)
    at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3541)
    at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2002)
    at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2163)
    at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2624)
    at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2127)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2427)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2345)
    at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2330)
    at org.springframework.jdbc.core.JdbcTemplate$2.doInPreparedStatement(JdbcTemplate.java:744)
    at org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:537)
    ... 5 more

если это поможет, это мой код FinanceDao

package dao;

import javax.sql.DataSource;
import javax.sql.DataSource;

import org.springframework.jdbc.core.JdbcTemplate;

import dao.mapper.UserRowMapper;
import domainmodel.User;

public class FinanceDao implements Manage {

    private DataSource ds;

    @Override
    public void setDataSource(DataSource ds) {
        this.ds = ds;

    }

    @Override
    public void Add(String empID, String password) {
        JdbcTemplate Add = new JdbcTemplate(ds);
        Add.update("INSERT INTO PERSON (empID,password) VALUES(?,?)",
        new Object[] { empID, password });
    }

    @Override
    public void Delete(String empID , String password) {
        JdbcTemplate Delete = new JdbcTemplate(ds);
        Delete.update("Delete from User where emp_id = '?'",new Object[]{empID});
    }

}

Ответы [ 4 ]

2 голосов
/ 30 ноября 2011

Я вижу исключение, вызванное: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: неизвестный столбец 'empID' в 'списке полей', вы уверены, что столбец называется empID, а не empID или чем-то подобным?*

1 голос
/ 30 ноября 2011

Дано:

MySQLSyntaxErrorException: Unknown column 'empID' in 'field list'

Мне хотелось бы знать, существует ли на самом деле столбец с именем empID в User. Исходя из запроса на удаление, похоже, что вы имели в виду emp_id вместо:

@Override
public void Add(String empID, String password) {
    JdbcTemplate Add = new JdbcTemplate(ds);
    Add.update("INSERT INTO PERSON (emp_id,password) VALUES(?,?)",
    new Object[] { empID, password });
}
1 голос
/ 30 ноября 2011

Вы используете emp_id в своем удалении, но empID в своем добавлении.Ошибка говорит:

Исключение в потоке "main" org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback;плохая грамматика SQL [ВСТАВИТЬ В ЧЕЛОВЕКА (empID, пароль) ЗНАЧЕНИЯ (?,?)];вложенным исключением является com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: неизвестный столбец 'empID' в 'списке полей'

Это означает, что он не может найти empID в вашей базе данных.Вы, вероятно, определили это как emp_id

0 голосов
/ 30 ноября 2011

Вы называете столбец id двумя разными вещами, emp_id в одной инструкции и empID в другой. Выбери один.

Согласно сообщению об ошибке, emp_id, скорее всего, более корректный. Является ли метод DAO Add правильным?

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