SqlServer插入数据并且获取标识列

对于mysql插入一条数据可以通过下面的DButil方法获取插入数据的标识列,并且将标识列填补到传过来的类中即在DAO中的方法,这个类就是完整的了

DButil中的方法:

// 插入一条新纪录,并获取标识列的值
public ResultSet getInsertObjectIDs(String insertSql) {
ResultSet rst = null;
try {
Connection conn = createConn();
Statement stmt = conn.createStatement();
stmt.executeUpdate(insertSql, Statement.RETURN_GENERATED_KEYS);
rst = stmt.getGeneratedKeys();
} catch (SQLException e) {
e.printStackTrace();
}
return rst;
}

DAO中的方法:

public int insert(Play play) {
try {
String sql = “insert into play(play_name,play_introduction,play_image,play_length,play_ticket_price,play_status,play_type)”
+ " values(’"+play.getName()+"’,’"+play.getIntroduction()+"’,’"+play.getImage()+"’,’"+play.getLength()+"’,’"+play.getTicketPrice()+"’,’"+play.getStatus()+"’,’"+play.getType()+"’)";
DBUtil db = new DBUtil();
System.out.println(sql);
ResultSet rst = db.getInsertObjectIDs(sql);
if (rst!=null && rst.first()) {
return 1;
}
} catch (SQLException e) {
e.printStackTrace();
}

	return 0;
}

而对于SQLserver来说,这种方法并不能得到有效的应用,得不到标识列,此刻就要寻求一个全新的方法来实现
方法的思想是:先进行插入操作,不管返回结果就给它变为赋值成功(1)赋值不成功(0)即DButil中的方法,此时回到DAO中的方法去判断是否成功,如果是1那么成功那么按照刚插入的那条元组的其他属性列来查找这条元组的所有的东西,执行这条查询的SQL语句得到一个resultset,然后对resultset进行遍历,给这个传过来的类赋值标识列即Id,不断覆盖,最后把最后一次的标识列的值赋给这个传过来的类,即可完成
DButil中的方法:

public int getInsertObjectIDs(String insertSql) {
int rst = 0;
try {
Connection conn = createConn();
Statement stmt = conn.createStatement();
rst = stmt.executeUpdate(insertSql, Statement.RETURN_GENERATED_KEYS);
//rst = stmt.getGeneratedKeys();
if(rst > 1) {
rst = 1;
}
} catch (SQLException e) {
e.printStackTrace();
}
return rst;
}

DAO中的方法:

public int insert(User user) {
String sql = “insert into user1(user_name,user_account , user_password)”
+ " values(’"
+ user.getName()
+ “’, '”
+ user.getAccount()
+ “’, '” + user.getPassword()
+ “’ )”;
DBUtil db = new DBUtil();
int rst = db.getInsertObjectIDs(sql);
if ( rst == 1)
{
sql= “select * from user1 where user_name = '”+ user.getName()+"’";
ResultSet rs = db.execQuery(sql);
try {
while(rs.next()) {
int n = rs.getInt(“user_ID”);
user.setID(n);
}
System.out.println(user.getID());
return 1;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值