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’这条记录,查看了数据库,的确没删掉,这是为什么啊?各位大虾帮忙!!!
数据库是这样的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;
delete from testuser where userid='100003';
试过没?
char的长度是固定的,比如说,你定义了char(20),即使你你插入abc,不足二十个字节,数据库也会在abc后面自动加上17个空格,以补足二十个字节;
nvarchar和nvarchar2是长度不固定的
nvarchar不区分中英文,比如说:你定义了nvarchar(20),你可以存入20个英文字母/汉字或中英文组合,这个20定义的是字符数而不是字节数