问题描述:
一个insert方法
PreparedStatement ps;
String sql="insert message (id,name,msg) value(?,?,?)"
ps.setString(1,); --------------ID
ps.setString(2,name);
ps.setString(3,msg);
该怎样写能让ID字段 自增?
===========================================
没比的意思,不过请务必测试过了再回答
这问吧并不怎么好。。。
关于MYSQL自带的自蹭问题
我不要这个功能
有3条数据 编号1 2 3
我清空在插 就是4起步了
问题解答:
2种解决办法
1.修改你的数据库表,将ID设为自增长,注:只有主键才可以设置为自增长
例:CREATE TABLE `message ` (`id` INT(8) NOT NULL AUTO_INCREMENT, PRIMARY KEY(`id`));
2.代码中进行处理
Statement ps;
ResultSet rs;
int id = 0;
..................
String sql="select max(id) as id from message";
rs = ps.executeQuery(sql);//查询出最大ID
if(rs.next){//如果有ID,原有ID+1
id = rs.getInt("id")+1;
}else{//否则 ID 初始为0
id = 0;
}
//下面接你写的代码就OK了
PreparedStatement ps;
String sql="insert message (id,name,msg) value(?,?,?)"
ps.setString(1,id);
ps.setString(2,name);
ps.setString(3,msg);
MySql中提供了自增,你可以修改你的表结构,要么干脆新建一个表create table test(id int AUTO_INCREMENT)
然后插入数据库的时候就不要管这个字段了,如下:
insert message(name,msg) values(?,?);
PreparedStatement ps;
String sql="insert message (id,name,msg) value(?,?,?)"
ps.setString(2,name);
ps.setString(3,msg);
主键的数据不用赋值,数据库会自动给你一个值的。
create table的时候把id设为自增的
如create table users
(
id int primary key auto_increment,
...
);
插入时赋空值就可以了
首先id是int型的,不是String 的,所以要用getInt而不是getString。
其次,如果你想非数据库自动设置,那在你写入的前台,随便设置一个计数的东西就好。