尝试在表中插入行时出现SQL语法错误异常

用户名

嗨,我无法执行以下功能而没有遇到以下异常。我不确定为什么会这样。我认为这可能与报价有关。如果有问题,我正在使用derby数据库。

java.sql.SQLSyntaxErrorException

这是我尝试执行的以下代码:

public void addAlbum(Album album) throws IOException, SQLException {
    Properties props = new Properties();
    FileInputStream in = new FileInputStream("database.properties");
    props.load(in);
    in.close();

    props.getProperty("jdbc.drivers");
    String url = props.getProperty("jdbc.url");
    String username = props.getProperty("jdbc.username");
    String password = props.getProperty("jdbc.password");

    Connection connection = DriverManager.getConnection(url, username, password);
    Statement statement = connection.createStatement();
    String sql = null;

    if(album instanceof CDAlbum) {
        CDAlbum cdAlbum = (CDAlbum)album;
        sql = "INSERT INTO MyAlbums VALUES ('CD', '" + cdAlbum.getTitle() + "', '" + cdAlbum.getGenre() + "','" + cdAlbum.getArtist() + "', '" + cdAlbum.getTracks() + "');";
    }
    if(album instanceof DVDAlbum) {
        DVDAlbum dvdAlbum = (DVDAlbum)album;
        sql = "INSERT INTO MyAlbums VALUES ('DVD', '" + dvdAlbum.getTitle() + "', '" + dvdAlbum.getGenre() + "','" + dvdAlbum.getDirector() + "', '" + dvdAlbum.getPlotOutline() + "');";
    }

    statement.executeUpdate(sql);
    System.out.println("Album Added!");

    if(statement != null) {
        statement.close();
    }
    if(connection != null) {
        connection.close();
    }
}

这是例外:

java.sql.SQLSyntaxErrorException: Syntax error: Encountered "t" at line 2, column 5.
at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedConnection.handleException(Unknown Source)
at org.apache.derby.impl.jdbc.ConnectionChild.handleException(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedStatement.execute(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedStatement.executeLargeUpdate(Unknown Source)
at org.apache.derby.impl.jdbc.EmbedStatement.executeUpdate(Unknown Source)
at au.edu.uow.CollectionDB.MyCollectionDB.addAlbum(MyCollectionDB.java:194)
at au.edu.uow.Collection.CollectionFactory.loadCollection(CollectionFactory.java:136)
at MyCollection.main(MyCollection.java:18)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
Caused by: ERROR 42X01: Syntax error: Encountered "t" at line 2, column 5.
at org.apache.derby.iapi.error.StandardException.newException(Unknown Source)
at org.apache.derby.iapi.error.StandardException.newException(Unknown Source)
at org.apache.derby.impl.sql.compile.ParserImpl.parseStatementOrSearchCondition(Unknown Source)
at org.apache.derby.impl.sql.compile.ParserImpl.parseStatement(Unknown Source)
at org.apache.derby.impl.sql.GenericStatement.prepMinion(Unknown Source)
at org.apache.derby.impl.sql.GenericStatement.prepare(Unknown Source)
at org.apache.derby.impl.sql.conn.GenericLanguageConnectionContext.prepareInternalStatement(Unknown Source)
... 11 more
路易吉·门多萨(Luiggi Mendoza)

您的代码中有两个问题:

  1. SQL语句;最后不需要分号它将使代码失败。

  2. 该代码易于进行SQL注入并且难以维护。PreparedStatement改用:

这应该是工作代码:

String sql = "INSERT INTO MyAlbums VALUES (?, ?, ?, ?, ?)";
PreparedStatement pstmt = connection.prepareStatement(sql);
if(album instanceof CDAlbum) {
    pstmt.setString(1, "CD");
    CDAlbum cdAlbum = (CDAlbum)album;
    pstmt.setString(4, cdAlbum.getArtist());
    pstmt.setString(5, cdAlbum.getTracks());
}
if(album instanceof DVDAlbum) {
    pstmt.setString(1, "DVD");
    DVDAlbum dvdAlbum = (DVDAlbum)album;
    pstmt.setString(4, dvdAlbum.getDirector());
    pstmt.setString(5, dvdAlbum.getPlotOutline());
}
pstmt.setString(2, album.getTitle());
pstmt.setString(3, album.getGenre());
pstmt.executeUpdate();

平原字符串连接而这种做法对于你的情况之间的区别就是PreparedStatement参数会逃跑任何'"和其他字符你。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

尝试在表中插入行时出现SQL语法错误异常

来自分类Dev

尝试在 SQL 中插入多行时出现语法错误?

来自分类Dev

尝试通过python脚本在PostgreSQL中插入行时在“ I”处或附近出现语法错误

来自分类Dev

在 PHP 中插入 MySQL 表时出现语法错误

来自分类Dev

尝试在数据库中插入行时SQL语法无效

来自分类Dev

尝试在 tableView 中插入行时出现 NSInternalInconsistencyException

来自分类Dev

插入表时 SQL 语法错误

来自分类Dev

尝试将变量作为表名和值插入时出现mysql语法错误

来自分类Dev

插入查询中的SQL语法错误

来自分类Dev

尝试在sql中声明变量并使用if-else语句时出现语法错误。-“ VARCHAR”或附近的语法错误

来自分类Dev

在存储过程中遍历表的所有行时出现语法错误

来自分类Dev

尝试从其他表中提取数据时,SQL中出现语法错误

来自分类Dev

尝试使用 postgres INSERT INTO 表时出现语法错误

来自分类Dev

尝试在pycharm中运行时显示语法错误

来自分类Dev

尝试更新小时表中的time_out时出现语法错误

来自分类Dev

尝试通过python插入时的SQL语法错误

来自分类Dev

VALUE从文字中构造表行时出现语法错误

来自分类Dev

尝试检索主键时出现SQL语法错误

来自分类Dev

使用MS SQL ODBC插入时出现语法错误

来自分类Dev

排序:将一个表中的两列关联。添加关联后,插入行时出现错误

来自分类Dev

在mysql中更新记录时出现语法错误异常

来自分类Dev

在mysql中更新记录时出现语法错误异常

来自分类Dev

尝试在mysql中创建过程时出现语法错误

来自分类Dev

语法错误:读取行时出现EOF

来自分类Dev

SQL查询语法错误:尝试查询表中的最后n行

来自分类Dev

从三个表中获取数据但出现SQL语法错误

来自分类Dev

插入时出现语法错误

来自分类Dev

当我尝试向数据库中插入行时,“表时间轴没有出现名为source的列”

来自分类Dev

MySQL-尝试插入字符串/数字时出现语法错误

Related 相关文章

  1. 1

    尝试在表中插入行时出现SQL语法错误异常

  2. 2

    尝试在 SQL 中插入多行时出现语法错误?

  3. 3

    尝试通过python脚本在PostgreSQL中插入行时在“ I”处或附近出现语法错误

  4. 4

    在 PHP 中插入 MySQL 表时出现语法错误

  5. 5

    尝试在数据库中插入行时SQL语法无效

  6. 6

    尝试在 tableView 中插入行时出现 NSInternalInconsistencyException

  7. 7

    插入表时 SQL 语法错误

  8. 8

    尝试将变量作为表名和值插入时出现mysql语法错误

  9. 9

    插入查询中的SQL语法错误

  10. 10

    尝试在sql中声明变量并使用if-else语句时出现语法错误。-“ VARCHAR”或附近的语法错误

  11. 11

    在存储过程中遍历表的所有行时出现语法错误

  12. 12

    尝试从其他表中提取数据时,SQL中出现语法错误

  13. 13

    尝试使用 postgres INSERT INTO 表时出现语法错误

  14. 14

    尝试在pycharm中运行时显示语法错误

  15. 15

    尝试更新小时表中的time_out时出现语法错误

  16. 16

    尝试通过python插入时的SQL语法错误

  17. 17

    VALUE从文字中构造表行时出现语法错误

  18. 18

    尝试检索主键时出现SQL语法错误

  19. 19

    使用MS SQL ODBC插入时出现语法错误

  20. 20

    排序:将一个表中的两列关联。添加关联后,插入行时出现错误

  21. 21

    在mysql中更新记录时出现语法错误异常

  22. 22

    在mysql中更新记录时出现语法错误异常

  23. 23

    尝试在mysql中创建过程时出现语法错误

  24. 24

    语法错误:读取行时出现EOF

  25. 25

    SQL查询语法错误:尝试查询表中的最后n行

  26. 26

    从三个表中获取数据但出现SQL语法错误

  27. 27

    插入时出现语法错误

  28. 28

    当我尝试向数据库中插入行时,“表时间轴没有出现名为source的列”

  29. 29

    MySQL-尝试插入字符串/数字时出现语法错误

热门标签

归档