public static void deleteUser(User user) {
// TODO Auto-generated method stub
Connection conn = null;
PreparedStatement stmt = null;
ResultSet rs = null;
try {
String sql = "delete from testuser where userid=?";
System.out.println(sql+" ");
conn = JDBCUtils.getInstance().getConnection();//获得数据库连接
stmt = conn.prepareStatement(sql);
stmt.setString(1, user.getUserid());//设置条件
int i = stmt.executeUpdate();//删除的记录条数
System.out.println("i = " + i);
} catch (SQLException e) {
e.printStackTrace();

}然后在main方法中如此调用                User user = new User();
user.setUserid("100003");
                user.setName("hh");
user.setBirthday(new Date());
user.setMoney(1000000);
deleteUser(user);但是控制台打印的i值总是0,可是数据库中有‘100003’这条记录,查看了数据库,的确没删掉,这是为什么啊?各位大虾帮忙!!!

解决方案 »

  1.   

    应该是sql语句的问题吧,你把你的sql语句加上id号直接在数据库上去试一下看行不?
      

  2.   

    userid是字符串?试试把user.setUserid("100003");改为user.setUserid("'100003'");
      

  3.   

    加入conn.commit();提交一下试试
      

  4.   

    看看数据库是int类型的userid还是String类型的userid
      

  5.   

    上面的方法都试过,还是没有效果
    数据库是这样的create table TESTUSER
    (
      USERID   CHAR(20) primary key,
      NAME     VARCHAR2(20) not null,
      BIRTHDAY DATE,
      MONEY    NUMBER(10,2)
    );
    create sequence seq_userid  start with 100001 increment by 1 nocycle;
      

  6.   

    那么不要通过代码,直接在数据库里执行这个sql
    delete from testuser where userid='100003';
    试过没?
      

  7.   

    这个试过,可以删除    但是通过在deleteUser方法中删不了
      

  8.   

     USERID   CHAR(20) primary key,
    char的长度是固定的,比如说,你定义了char(20),即使你你插入abc,不足二十个字节,数据库也会在abc后面自动加上17个空格,以补足二十个字节; 
    nvarchar和nvarchar2是长度不固定的 
    nvarchar不区分中英文,比如说:你定义了nvarchar(20),你可以存入20个英文字母/汉字或中英文组合,这个20定义的是字符数而不是字节数 
      

  9.   

    将USERID 字段改成VARCHAR2试试吧
      

  10.   

    楼上正解哈,不过数据库主键为什么用char型呢?一般都是int,long或者varchar2的,最好还是把事务加上