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

wilson751 05-12-30

在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

已解决
谢谢大家