你好,我想请问SQL 插入和修改的问题我声明了一个Object[4]用于存放传来的数据Object[0]=reader.getId();
Object[1]=reader.getName();
Object[2]=reader.getPeriod();
Object[3]=reader.getRegisterTime();其中Id是int型的,Name是String型的,Period和RegisterTime都是Date型的.RegisterTime显示的是当前时间请问下sql语句insert添加怎么写 
我是这么写的(t_reader中数据库表名)
insert into t_reader(id,name,period,registerTime) values(obj[0],'"+obj[1]+"',obj[2],getDate())结果肯定是错误不能添加的.
有没有老师能教我下,顺便也说修改语句update 在这种情况下该怎么写.
谢谢

解决方案 »

  1.   


    //这样试试看!把各元素能转成原来的类型是最好!
    PreparedStatement ps = conn
                    .prepareStatement("insert into t_reader(id,name,period,registerTime) values(?,?,?,?)");
                ps.setObject(1, obj[0]);
                ps.setObject(2, obj[1]);
                ps.setObject(3, obj[2]);
                ps.setObject(4, getDate());
                ps.executeUpdate();
      

  2.   

    一般在插入修改数据库时。我们需要一个VO类。
    PreparedStatement ps = conn
                    .prepareStatement("insert into t_reader(id,name,period,registerTime) values(?,?,?,?)");
                ps.setObject(1, obj[0]);//分别得到VO类里的属性就可以。
                ps.setObject(2, obj[1]);
                ps.setObject(3, obj[2]);
                ps.setObject(4, getDate());
                ps.executeUpdate();
      

  3.   

    以后再问db方面的问题时介绍你的数据库,不同数据库sql写法略有区别,
    比如oracle下面date是不能直接写sql插的,需要to_date函数转换,
    出错先分析异常,分析不明白要贴出来,告诉你如何分析异常信息,类似问题下次就不用来问了.
    你按楼上的写就行了.比较简单通用.update也一样就是把参数写成?就行了.还能避免sql注入.