我是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行
答案 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视为字符串,它们应该用引号括起来。