我建的表
create table Z01_toot(
id number(6) primary key,
c_name varchar2(20),
c_type varchar2(20),
c_date date,
people varchar2(10),
money number(10,2),
states varchar2(20),
res varchar2(50)
);insert into Z01_toot values(id_seq.nextval,'合同1','框架合同',to_date('2010-01-10','yyyy-mm- dd'),'toot',1200.12,'待归档','这是一个合同');能正常插入,在数据库中用sql语句查c_date 是2011-01-10
可是在jsp页面中查询显示是2011-01-10 00:00:00.0现在的问题是我在jsp页面编辑修改表内容(不改c_date)后,再把数据update回数据库,就提示‘仅能绑定要插入 LONG 列的 LONG 值’我猜可能是那个‘00:00:00.0’的问题,怎么使jsp页面中也只显示2011-01-10啊,求教啊

解决方案 »

  1.   

    首先这不是你的数据库的问题你在JSP页面显示的日期类型的时候要对日期类型进行格式化显示如EL表达式<fmt:formatDate value="${日期}" pattern="MM/dd/yyyy"/>你的问题是执行update操作时有问题。
      

  2.   

    因为你数据库建表的字段是date类型,所以存进去oracle数据库会自动帮你在后面加入时分秒(毫秒),如果你不想这样,有2中办法:
    1.可以修改数据库字段
    2.修改代码,读出来时间格式化
    如果是做项目,本人建议第2中,安全。
      

  3.   

    数据库到页面:DateFormat.format('你的数据库取出的date类型','yyyy-mm-dd hh24:mi:ss')页面保存到数据库 insert into oracle_table(to_date('你页面的date日期字符串string','yyyy-mm-dd hh24:mi:ss')你要始终意识到:jsp页面显示的都是字符串,date是到了数据库层的数据类型
      

  4.   

    多谢上面几位哈,现在jsp页面是显示正确了,但是我修改后还是不能update成功啊
    根据id查到部分信息:
    String sql = "select c_name,to_char(c_date,'yyyy-mm-dd'),people,res from Z01_toot where id=?";
    然后再更新:
    String sql="update Z01_toot set c_name=?,to_date(c_date=?,‘yyyy-mm-dd'),people=?,res=?,money=? where id=?";错误提示还是‘仅能绑定要插入 LONG 列的 LONG 值’,纠结啊,是不是update语句有问题啊
      

  5.   

    5楼写错了,set后面是c_date=to_date(?,'yyyy-mm-dd'),不过结果还是那样- -
      

  6.   

    现在我感到非常奇怪的一点是,我直接在数据库的控制台用
    update Z01_toot set c_name='genxin',c_date=to_date('2011-1-12','yyyy-mm-dd') where id=3;
    是更新成功的而在jsp页面中
    String sql="update Z01_toot set c_name=?,c_date=to_date(?,'yyyy-mm-dd')where id=?";
    ps = con.prepareStatement(sql);
    ps.setString(1,c_name);
    ps.setString(2,c_date);
    ps.setString(3,id);
    ps.executeUpdate();
    更新失败,提示错误(各变量已经获取表单中的值了,且格式正确的)
      

  7.   

    ps.setString(2,c_date);这里对吗?
      

  8.   


    我在myeclipse的控制台把所有值都System.out.print了,某条数据的c_date是2011-01-12(页面上是改成这个了),这表示传值什么的都没错,应该是update的事,哎,我再仔细对对吧...
      

  9.   


    我的意思是这里不应该是setString
      

  10.   


    这里我后来用setDate的,里面的String类型的c_date就需要强转了,貌似要import java.text.DateFormat,后来我发现没必要在这里转,因为sql语句中我用oracl的函数to_date更方便,但是结果还是该屎的‘仅能绑定要插入 LONG 列的 LONG 值’心灰意冷啊,干脆把c_date改成varchar2算了,试试去