如何在MYSQL插数据 ID自增

发布时间:2024-05-11 18:47 发布:上海旅游网

问题描述:

一个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。
其次,如果你想非数据库自动设置,那在你写入的前台,随便设置一个计数的东西就好。

热点新闻