mysql数据库让值加一_向MYSQL数据库的表中插入有自动加一主键的数值 | 学步园...

本文介绍了如何在MySQL中将表的ID字段设置为自动加一,以便用户注册时无需指定ID。在尝试通过程序插入数据时遇到问题,作者通过先获取ID最大值再加一的方式解决,但遇到了一些错误。最后展示了如何正确地在Java程序中进行插入操作。
摘要由CSDN通过智能技术生成

昨天晚上没搞成,早上起来搞定了!

原来的表中ACCOUNT中 ID  不是自动增加的,别人注册账户的时候需要制定ID,这个是很不好的,所以把ID

设定为自动加一,用户不用管ID,只注册登记其他的信息,所以修改MYSQL。

mysql> ALTER TABLE `database`.`table` MODIFY COLUMN `id` INTEGER AUTO_INCREMENT;

然后实现程序中的增加,问题出现了,我在MYSQL中可以用这样的语句:

mysql>insert into accounts values( ' ' ,'username','password');

但是在程序中却不行!比如:

strSql="insert into account values(' ','"+username+"','"+password+"')";

try {

connect =dataSource.getConnection();

Statement stmt=connect.createStatement();

result =stmt.executeUpdate(strSql);

} catch (SQLException ex) {

System.err.println(ex.getMessage());// TODO: handle exception

}

于是想,干脆先求ID的最大值,然后插入时加一,写个函数:

public int MAX_ID()throws Exception{

Connection connect =null;

String strSql;

ResultSet rs;

int maxId=0;

strSql="select MAX(id) FROM account";

try {

connect=dataSource.getConnection();

Statement stmt=connect.createStatement();

rs=stmt.executeQuery(strSql);

if(rs.next())

maxId=Integer.parseInt(rs.getString(1));

// maxId=Integer.parseInt(rs.getString("id ")); 这样写不行,报错说ID列有错之类的,找不到原因!

} catch (SQLException e) {

e.printStackTrace();

}

finally{

if(connect!=null)connect.close();

}

return maxId;

}

然后在插入函数时:这样写:

public int Insert(String username,String password)throws Exception{

Connection connect=null;

String strSql;

int result =0,maxID;

maxID=this.MAX_ID()+1;//刚才求出的最大数值!

strSql="insert into account values('"+maxID+"','"+username+"','"+password+"')";

//strSql="insert into account values(maxID,'"+username+"','"+password+"')";这样写也报错!

try {

connect =dataSource.getConnection();

Statement stmt=connect.createStatement();

result =stmt.executeUpdate(strSql);

} catch (SQLException ex) {

System.err.println(ex.getMessage());// TODO: handle exception

}

finally{

if(connect!=null)connect.close();

}

return result;

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值