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);
数据表如下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;
控制台打印的i值总是0,可是数据库中有‘100003’这条记录,查看了数据库,的确没删掉,各位大虾帮忙!!!新手很纠结啊。
char的长度是固定的,比如说,你定义了char(20),即使你你插入abc,不足二十个字节,数据库也会在abc后面自动加上17个空格,以补足二十个字节;
nvarchar和nvarchar2是长度不固定的
nvarchar不区分中英文,比如说:你定义了nvarchar(20),你可以存入20个英文字母/汉字或中英文组合,这个20定义的是字符数而不是字节数将USERID 字段改成VARCHAR2试试吧
JdbcUtils.free(rs, stmt, conn);
}
看看是否执行。另外,数据库是否是自动提交的。
请检查这个
的确如你所说,改成varchar2可以,谢谢