java数据库表格插入问题!!!请大家帮忙看看,谢谢了,,,,
就是我的表格有三个属性分别为:userId(int是自增的),userName(String),password(String)下面是我的插入方法(因为userId是自增...
就是我的表格有三个属性分别为:userId(int是自增的),userName(String),password(String)
下面是我的插入方法(因为userId是自增的所以插入时只用插入userName,和password),那么现在问题来了,我想把下面程序的返回值改为本次插入时数据库自增得到的userId,请问怎么改啊?
public static int addUser(String userName,String password) {
PreparedStatement sql;
try {
sql = CommonMethod.connectDataBase().prepareStatement("insert into User_table values(?,?)");
// CommonMethod.connectDataBase()是连接数据库的方法返回类型是Connection
sql.setString(1, userName);
sql.setString(2, password);
sql.execute();
return 1;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return 0;
}
} 展开
下面是我的插入方法(因为userId是自增的所以插入时只用插入userName,和password),那么现在问题来了,我想把下面程序的返回值改为本次插入时数据库自增得到的userId,请问怎么改啊?
public static int addUser(String userName,String password) {
PreparedStatement sql;
try {
sql = CommonMethod.connectDataBase().prepareStatement("insert into User_table values(?,?)");
// CommonMethod.connectDataBase()是连接数据库的方法返回类型是Connection
sql.setString(1, userName);
sql.setString(2, password);
sql.execute();
return 1;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return 0;
}
} 展开
4个回答
展开全部
参考JAVA 的API
Interface java.sql.Statement
int executeUpdate(String sql, int autoGeneratedKeys)
以下是demo:
Statement stmt = conn.createStatement();
String sql = "INSERT INTO t_topic(topic_title,user_id) VALUES(‘测试主题','123') ";
stmt.executeUpdate(sql,Statement.RETURN_GENERATED_KEYS); ①指定绑定表自增主键值
ResultSet rs = stmt.getGeneratedKeys(); if ( rs.next() ) { int key = rs.getInt();②获取对应的表自增主键值 }
Interface java.sql.Statement
int executeUpdate(String sql, int autoGeneratedKeys)
以下是demo:
Statement stmt = conn.createStatement();
String sql = "INSERT INTO t_topic(topic_title,user_id) VALUES(‘测试主题','123') ";
stmt.executeUpdate(sql,Statement.RETURN_GENERATED_KEYS); ①指定绑定表自增主键值
ResultSet rs = stmt.getGeneratedKeys(); if ( rs.next() ) { int key = rs.getInt();②获取对应的表自增主键值 }
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
先插入,完成之后不关闭连接 再查询啊 select* from usertable where username= ? 参数当然是你传入的username啦
追问
谢谢你的回答,username不是主键,userId才是主键
追答
晕 我当然知道username不是主键啦 你不是要返回插入数据之后的自动增长的userId吗? 插入数据完成后,再根据你插入数据时的username查询这条数据获取userId
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不同数据库使用的方法不同,不知道你用的哪种,只好给你写一个mysql的吧
PreparedStatement lastPs = conn.prepareStatement("select last_insert_id()");
ResultSet rs = lastPs.executeQuery();
int primaryId = rs.getString(1);
return primaryId ;
PreparedStatement lastPs = conn.prepareStatement("select last_insert_id()");
ResultSet rs = lastPs.executeQuery();
int primaryId = rs.getString(1);
return primaryId ;
追问
非常感谢你的回答,我用的是sql sever 2005按照你的思路,
结果此句(int primaryId = rs.getInt(1);)
报出错:com.microsoft.sqlserver.jdbc.SQLServerException: 结果集没有当前行
请问怎么解决啊?再次感谢。。。
追答
首先,select last_insert_id()是mysql专有的,当然不行
sql2005的方法:
插入完之后再调用:SELECT IDENT_CURRENT ('表名') AS Current_Identity;
就会返回当前最新的主键值
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
哪里有问题啊,我运行正常啊
追问
谢谢了,你没看清题目
追答
没呢 你不是问那个人为什么你照着他的改 还是有问题,我是问你那个你的问题在哪里。是哪里不对了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询