CREATE TABLE test (
tid int(11) NOT NULL auto_increment,
tname varchar(20) default NULL,
PRIMARY KEY (tid)
) ;
String sql="insert into test (tname)values('一');";
int flag= conn.updateLog(sql); //一个已经写好的方法 ,方法没有问题
if(flag!=0){
sql="select @@identity as tid;";
ResultSet rs= conn.selectLog(sql); //一个已经写好的方法,方法没有问题
if(rs.next()){
System.out.println("rs.getInt(1)="+rs.getString(1));
}else{
System.out.println("select fail");
}
}else{
System.out.println("insert fail");
}
如上代码为什么取不出刚插入的值呢?
select @@identity as tid;这个方法不没有错误的
我用mysql的界面操作过,一切成功
1、插入
insert into test(tname)values('一');
Query OK, 1 row affected
2、查询刚插入的值
select @@identity as tid;
+-----+
| tid |
+-----+
| 6 |
+-----+
1 row in set
这就证明我的语句没错
只是不知道怎么样在java里写
希望高手能帮我解决一下
感激不尽
mysql 用last_insert_id() 这个函数就可以。
select * from $table order by tid desc limit 0,1;
查询叨叨的记录不是你刚刚插入的?
你这样肯定不行,你确定就你一个数据库联接?
或者
select last_insert_id()
都可以。
select @@identity 和 select last_insert_id()的区别
那文章说select @@identity 才是最安全的,所以就放弃了select last_insert_id()
不过,今天又看到一文章说select last_insert_id()没问题
http://www.gnuedu.org/php-mysql/mysqlc-last_insert_id-kekao.html
所以结贴了,在此谢谢各位
/// 增加一条数据
/// </summary>
public int Add(XQ.Model.TNews model)
{
StringBuilder strSql = new StringBuilder();
strSql.Append("insert into TNews(");
strSql.Append("FNewsTypeId,FNewsTitle,FNewsContent,FNewsTime,FNewsLevel,FNewsUser,FNewsNum,Ext1,Ext2,Ext3,Ext4,Ext5)");
strSql.Append(" values (");
strSql.Append("@FNewsTypeId,@FNewsTitle,@FNewsContent,@FNewsTime,@FNewsLevel,@FNewsUser,@FNewsNum,@Ext1,@Ext2,@Ext3,@Ext4,@Ext5)");
strSql.Append(";select @@IDENTITY");
SqlParameter[] parameters = {
new SqlParameter("@FNewsTypeId", SqlDbType.Int,4),
new SqlParameter("@FNewsTitle", SqlDbType.VarChar,200),
new SqlParameter("@FNewsContent", SqlDbType.Text),
new SqlParameter("@FNewsTime", SqlDbType.DateTime),
new SqlParameter("@FNewsLevel", SqlDbType.Int,4),
new SqlParameter("@FNewsUser", SqlDbType.VarChar,100),
new SqlParameter("@FNewsNum", SqlDbType.Int,4),
new SqlParameter("@Ext1", SqlDbType.Int,4),
new SqlParameter("@Ext2", SqlDbType.Int,4),
new SqlParameter("@Ext3", SqlDbType.VarChar,100),
new SqlParameter("@Ext4", SqlDbType.VarChar,100),
new SqlParameter("@Ext5", SqlDbType.DateTime)};
parameters[0].Value = model.FNewsTypeId;
parameters[1].Value = model.FNewsTitle;
parameters[2].Value = model.FNewsContent;
parameters[3].Value = model.FNewsTime;
parameters[4].Value = model.FNewsLevel;
parameters[5].Value = model.FNewsUser;
parameters[6].Value = model.FNewsNum;
parameters[7].Value = model.Ext1;
parameters[8].Value = model.Ext2;
parameters[9].Value = model.Ext3;
parameters[10].Value = model.Ext4;
parameters[11].Value = model.Ext5; object obj = DbHelperSQL.GetSingle(strSql.ToString(), parameters);
if (obj == null)
{
return 0;
}
else
{
return Convert.ToInt32(obj);
}
}
主要就是这一句:strSql.Append(";select @@IDENTITY");然后执行的时候就这样int i = Convert.ToInt32(newsBll.Add(newsMol));i 就是刚插入数据编号