Orcle有个新闻表Newsid  NUMBER(11) 自增(序列是 id_seq)
title  nvarchar2(50)  标题
contant nvarchar2(500) 内容
comeFrom nvarchar2(20) 出处
addDate Date  添加时间在Java 里面的插入语句怎么写啊,
我写的这样总是出错:
        @Override
//添加新闻
public void addNews(News news)   //从外面传进来新闻对象
        {
String sql = "insert into news values(id_seq.nextval,?,?,?,?)";
                //获得连接
Connection con = BaseTool.getConnetion();
PreparedStatement ps=null;
try {
ps=con.prepareStatement(sql);
ps.setString(1, news.getTitle());//参数是新闻对象的标题
ps.setString(2, news.getContant());
ps.setString(3, news.getComeFrom());
ps.setDate(4, (java.sql.Date) news.getAddDate());
        ps.execute();
System.out.println("添加成功!");
} catch (SQLException e) {
e.printStackTrace();
}
finally{
BaseTool.CloseAll(con, ps);//关闭连接
}

}

解决方案 »

  1.   


    --使用触发器来做吧,
    --数据库会为你的news自增id号,
    create trigger tri_news_id
    before insert on news
    for each row
    begin
        select id_seq.nextval into :new.id from dual;
    end tri_news_id;
    public void addNews(News news)   //从外面传进来新闻对象
            {
            String sql = "insert into news(title,content,comefrom,adddate) values(?,?,?,?)";
                    //获得连接
            Connection con = BaseTool.getConnetion();
            PreparedStatement ps=null;
            try {
                ps=con.prepareStatement(sql);
                ps.setString(1, news.getTitle());//参数是新闻对象的标题
                ps.setString(2, news.getContant());
                ps.setString(3, news.getComeFrom());
                ps.setDate(4, (java.sql.Date) news.getAddDate());
                    ps.execute();
                System.out.println("添加成功!");
            } catch (SQLException e) {
                e.printStackTrace();
            }
            finally{
                BaseTool.CloseAll(con, ps);//关闭连接
            }
            
        }
      

  2.   

    错误的原因是插入数据库的时候主键自增,,,和  日期的插入问题
    不知道在Java的SQL语句怎么写
    求解
      

  3.   

    看你是人为控制的自增 还是数据库控制的自增。
    若是数据库控制的, 你不需要在sql 里面指明
    获取数据库当前日期可以用 sysdate
    for instance:
    insert into tablea (d_date) values(sysdate);
      

  4.   

    ? 的地方 写成 sysdate  (?,?,?,sysdate)
      

  5.   

    错误信息是什么呢?
    有可能是时间的问题 
    因为 sql.Date 和 util.Date 是不能互转的
    可以借助 to_date(?,'yyyy-mm-dd hh24:mi:ss ')然后问号赋予字符串类型