日期:2014-05-17  浏览次数:20721 次

新手问题,大侠请看,谢谢
114.//得到一个数据库中当前Id的最大值  
115.private int getMaxId()  
116.{  
117.Connection conn = null;  
118.Statement state = null;  
119.ResultSet rs = null;  
120.int maxId = 0;  
121.try {  
122.conn = DBTools.getConnection();  
123.state = conn.createStatement();  
124.String sql = "select max(id) maxId from notebook_user";  
125.rs = state.executeQuery(sql);  
126.//从resultset对象中将数据取出  
127.if(rs.next())  
128.{  
129.maxId = rs.getInt("maxId");  
130.}  
131.} catch (Exception ex) {  
132.// TODO Auto-generated catch block  
133.ex.printStackTrace();  
134.}  
135.  
136.  
137.return ++maxId;  
138.}  

我就纳闷125行已经查到了最大的maxId,为什么137是.return ++maxId;而不是return maxId???请大侠解答  
------解决方案--------------------
引用:
Quote: 引用:

你定义的maxId=0,而数据库中id是从1开始的

但是你看 129.maxId = rs.getInt("maxId");    这行代码不就是取得最大maxId并且赋值给120.int maxId 
是这样的,我在网上搜了一下发现,事实并不是你想的那样
// 新增user  
public void saveUserInfo(UserPO upo)  
{  
Connection conn = null;  
Statement state = null;  
try {  
conn = DBTools.getConnection();  
state = conn.createStatement();  
String sql = "insert into notebook_user values ("+getMaxId()+",'"+upo.getYhm()+"','"+upo.getEmail()+"','"+upo.getContent()+"')";  
//System.out.println(sql);  
state.executeUpdate(sql);  
  
  
} catch (Exception ex) {  
// TODO Auto-generated catch block  
ex.printStackTrace();  
}  
finally  
{  
DBTools.closeState(state);  
DBTools.closeConn(conn);  
}  

这里的插入语句是在原有的id的基础上+1而已
------解决方案--------------------
12楼说的是对的,你数据库中的这张表id是手动设置的,当需要新增一条记录的时候就需要把以前记录中最大的id查出来,然后+1,作为新增记录的id值