无法使用JAVA在MySql中插入记录

时间:2014-05-19 17:34:18

标签: java mysql

我是Java和MYSql的新手,实际上是第一次使用这个组合并面临真正的麻烦。我想在表中插入几条记录,但无法这样做。以下是MySql中名为tbl_cdr的表中的字段和数据类型。

**Field**        **Type**
DATEANDTIME  datetime NULL
VALUE1       int(50) NULL
VALUE2       varchar(50) NULL
VALUE3       varchar(50) NULL
VALUE4       varchar(50) NULL
VALUE5       varchar(50) NULL

我要插入的记录包含以下值 2014-05-19 02:37:18,405,MGW190514023718eab4,923016313475,IN,ALERTSC

我正在使用以下查询和语句在表中插入记录

 sqlQuery = "INSERT INTO tbl_cdr (DATEANDTIME,VALUE1,VALUE2,VALUE3,VALUE4,VALUE5)" + "VALUES ("+ forDateAndTime.format(date) + ", " + columnsList.get(1) + ", " + columnsList.get(2) + ", " + columnsList.get(3)  + ", " + columnsList.get(4) + ", " + columnsList.get(5) + ")";

try
        {
            Statement qryStatement = conn.createStatement();

            qryStatement.executeUpdate(sqlQuery);
            qryStatement.close();
        } catch (SQLException ex)
        {
            Logger.getLogger(CdrProject.class.getName()).log(Level.SEVERE, null, ex);
        }

但是当我到达语句qryStatement.executeUpdate(sqlQuery);异常抛出为:

  

MySQLSyntaxErrorException:SQL语法中有错误;   检查与您的MySQL服务器版本对应的手册   正确的语法在'02:37:18,405,MGW190514023718eab4附近使用,   923016313475,IN,ALERTSC)'第1行

2 个答案:

答案 0 :(得分:1)

value2,value3,value4和value 5是varchars,因此应该在''内写入。

这样做

sqlQuery = "INSERT INTO tbl_cdr (DATEANDTIME,VALUE1,VALUE2,VALUE3,VALUE4,VALUE5)" + "VALUES ("+ forDateAndTime.format(date) + ", " + columnsList.get(1) + ", '" + columnsList.get(2) + "',' " + columnsList.get(3)  + "',' " + columnsList.get(4) + "',' " + columnsList.get(5) + "')";

答案 1 :(得分:0)

您未正确插入日期。 MySQL允许您插入字符串文字或数字。

您尝试使用02:37:18作为数字,当您确实应该将其用作字符串文字时:' 02:37:18'

Here is the MySql Reference describing this.

你也不会将你的varchars视为字符串,它们应该用引号括起来。