update: 无效的列索引

caijingjing 2010-10-22 12:01:11
如题: update: 无效的列索引

表名:t_admin
字段:
ID NVARCHAR2(20) not null, 主键
USERNAME NVARCHAR2(20) not null,
PASSWORD NVARCHAR2(20),
BORNDATE DATE 生日
DUETIME DATE 当前日期

//主要代码
public void addAdmin(HttpServletRequest request) throws Exception
{
request.getRequestURL();
request.setCharacterEncoding("GBK");

//接受页面参数
String USERNAME =request.getParameter("USERNAME");
String PASSWORD =request.getParameter("PASSWORD");
String BORNDATE =request.getParameter("BORNDATE");
String DUETIME=request.getParameter("DUETIME");

//处理乱码
USERNAME = TextUtil.GBKConverter(USERNAME);
PASSWORD = TextUtil.GBKConverter(PASSWORD);
BORNDATE= TextUtil.GBKConverter(BORNDATE);
DUETIME= TextUtil.GBKConverter(DUETIME);

List list = ListUtil.addList(new String[]{USERNAME,PASSWORD,BORNDATE,DUETIME});

//SEQ_ADMIN.NEXTVAL是序列号
String sql="INSERT INTO t_admin (ID,USERNAME,PASSWORD,BORNDATE,DUETIME) VALUES (SEQ_ADMIN.NEXTVAL,?,?,?,sysdate)";

db.update(sql,list);

}
可以确定的是:
1、'?'貌似要改成? 没错
2、数据库的字段名一致
3、页面可以参数

主要问题:
1、List的String值
2、两个DATE类型的字段。
3、如何正确转换
如:String sql="INSERT INTO t_admin (ID,USERNAME,PASSWORD,BORNDATE,DUETIME) VALUES (SEQ_ADMIN.NEXTVAL,?,?,'"+BORNDATE+"',sysdate)";
调试报错如题: update: 无效的列索引。
无法insert数据。
望高人指点指点小弟。

在线等。谢谢!

...全文
274 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
心中的彩虹 2010-10-22
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 caijingjing 的回复:]
谢谢!
之前几个小项目都是使用list组合参数,然后db.update(sql,list),所以我还是很想继续使用。

类型转换后insert into t_admin

String sql="INSERT INTO t_admin (ID,USERNAME,PASSWORD,BORNDATE,DUETIME) VALUES (SEQ_ADMIN.NEXTVAL,?,?,'"+BOR……
[/Quote]
to_date(?,'yyyy-mm-dd')
gelyon 2010-10-22
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 caijingjing 的回复:]
谢谢!
之前几个小项目都是使用list组合参数,然后db.update(sql,list),所以我还是很想继续使用。

类型转换后insert into t_admin

String sql="INSERT INTO t_admin (ID,USERNAME,PASSWORD,BORNDATE,DUETIME) VALUES (SEQ_ADMIN.NEXTVAL,?,?,'"+BOR……
[/Quote]

--不是给你说了吗?
--这样处理日期试试:
String sql="INSERT INTO t_admin (ID,USERNAME,PASSWORD,BORNDATE,DUETIME)
VALUES (SEQ_ADMIN.NEXTVAL,?,To_Date(?,'yyyy-mm-dd'),?,sysdate)";
caijingjing 2010-10-22
  • 打赏
  • 举报
回复
谢谢!
之前几个小项目都是使用list组合参数,然后db.update(sql,list),所以我还是很想继续使用。

类型转换后insert into t_admin

String sql="INSERT INTO t_admin (ID,USERNAME,PASSWORD,BORNDATE,DUETIME) VALUES (SEQ_ADMIN.NEXTVAL,?,?,'"+BORNDATE+"',sysdate)";

BORNDATE DATE类型
DUETIME DATE类型
怎么操作呢。各位高手继续指教
gelyon 2010-10-22
  • 打赏
  • 举报
回复

--你用PreparedStatement做呢?拼接日期这样拼接:
String sql="INSERT INTO t_admin (ID,USERNAME,PASSWORD,BORNDATE,DUETIME) VALUES (SEQ_ADMIN.NEXTVAL,?,To_Date(?,'yyyy-mm-dd'),?,sysdate)"; -- 注意日期格式
PreparedStatement = Connection.prepareStatement(SQL);
PreparedStatement.setString(1, USERNAME);
PreparedStatement.setString(2, PASSWORD);
PreparedStatement.setString(3, BORNDATE);
PreparedStatement.execute();
caijingjing 2010-10-22
  • 打赏
  • 举报
回复
to_date(?,'yyyy-mm-dd'),测试通过。谢谢!

17,089

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧