运行代码后出现一堆错误

Posted

技术标签:

【中文标题】运行代码后出现一堆错误【英文标题】:Bunch of Errors after I run my Code 【发布时间】:2011-11-30 04:43:08 【问题描述】:

我试图使用 Java 和 Spring 框架(独立)在我的数据库中添加一个用户,但我在这段代码中遇到了具体问题

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);
    


【问题讨论】:

您真的有要插入的PERSON 表和要从中删除的User 表吗? 【参考方案1】:

我看到一个异常 原因:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'empID' in 'field list',你确定该列名为 empID 而不是 empId 或类似名称吗?

【讨论】:

这通常是问题所在。在这种情况下,我的问题是表名有误。【参考方案2】:

您在删除中使用emp_id,但在添加中使用empID。错误是说:

线程“main”中的异常 org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback;错误的 SQL 语法 [INSERT INTO PERSON (empID,password) VALUES(?,?)];嵌套异常是 com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'empID' in 'field list'

这意味着它在您的数据库中找不到empID。您可能已经将其定义为emp_id

【讨论】:

【参考方案3】:

给定:

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

我想知道User 中是否真的有一个名为empID 的列。根据删除查询,您的意思似乎是 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 );

【讨论】:

【参考方案4】:

您将 id 列称为两种不同的东西,一种是 emp_id,另一种是 empID。选一个。

根据错误消息,emp_id 可能更正确。 DAO Add 方法是否正确?

【讨论】:

我从没见过那个,我只是编辑了字段和表名。谢谢!

以上是关于运行代码后出现一堆错误的主要内容,如果未能解决你的问题,请参考以下文章

为啥matlab命令行窗口输入1b出现错误

构建失败并出现错误错误代码 72 命令:xcrun

第 2 次运行代码后出现 C 双重释放错误

编译代码后出现 MS ACCESS 错误

游戏运行出现错误怎么解决

新项目成功运行后立即出现完整项目 Swift 编译错误