java.sql.SQLException: ORA-00917 少逗号错误,高手指点,多谢先!

05-12-30 wilson751

在dao中,向oracle8中插入一条数据时,报错:java.sql.SQLException: ORA-00917 少逗号。

可是,我把sql语句打印输出后,发现并没有少逗号,搞不懂了,请高手指点,多谢先!

我的sql语句太长,只选了其中几个有代表性的字段。

从from表单得到几个字段值,打印输出结果证明:这里能正确得到form表单的值。

String name = User.getEmail();

String notice = User.getNotice();

Date create_time = User.getCreate_time();

接下来是执行插入,sql语句如下:

insert into user (name, notice, create_time) values

(‘” + name + “’, ‘” + notice + “’, Date);

下面是程序片段:

conn = ds.getConnection();

pstmt = conn.prepareStatement(sqlStr); //这句报错 java.sql.SQLException: ORA-00917

pstmt.executeUpdate();

由输出的日志可知,conn和pstmt能够成功得到。

由于某种原因,目前程序还不能使用pstmt.setString();这种形式。

另外,我把从日志输出的sql语句,直接到sql plus下运行,报错:

SP2-0552: 未说明结合变量"47"

请高手指点,谢谢!

wilson751
2005-12-31 18:07

我将控制台输出的sql语句拷贝下来,加上一个字段id,因为对应id建了一个sequence。

并将create_time字段值用sysdate代替,在sql plus中,插入成功!

在数据库中,create_time字段的类型是Date。

在程序中,用new Date取得系统时间后,已经转换成了java.sql.Date类型,如下:

java.util.Date uDate = new java.util.Date();

newBug.setCreate_time(new java.sql.Date(uDate.getTime()));

并且,NewBug.java中的属性create_time定义如下:

import java.sql.Date;

private Date create_time;

我觉得,已经将系统时间由java.util.Date,转换为java.sql.Date类型了,为什么数据库报错:

java.sql.SQLException: ORA-00932: 数据类型不一致

另外,我想将数据库中的字段create_time精确到秒,该怎么做?

wilson751
2006-01-04 13:56

已解决

谢谢大家