C#简单问题···· 在Visual Studio代码里向数据库添加数据 ,能显示数据库里的一个 UserID 的数据, UserID 是个表示列,该怎么做? 急···· 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 就是 如何在插入一条记录时,同时取得这条记录的 UserID值 UserID是标识列。 我在一个类里自定了个方法连接数据库操作向数据库里增加数据, 再建个类调用这个方法, 怎么把这个UserID 的值取出来?? 你既然是插入的数据那么userID 肯定也要插入的数据啊,除非userID有默认值或者自动生成等。如果是自动增长的ID那么直接在插入语句后 select @@identity 返回这个值到DS中。如果是其他类型的,都可以再插入的时候获得 如果UserID是自动增长的,那么insert into 。。 select @@identity 插入时把UserID的值返回出去。 楼上两个都对,在插入的时候把UserID返回去,你可以在插入完成以后,在查找你的表中最大的那个UserID,就是你刚刚添加的 http://topic.csdn.net/u/20110414/10/06526263-9e0d-491f-b963-7ae0afd1f7e4.html一个完整的例子。 能写详细点吗? 我写过 select @@identity ,但是调用这个方法就不知道怎么显示这个UserID离得值了 ,能写下嘛? sql server 有自动增长这个属性或是 取最大的userid: select max(userid) from usrinfo //结果+1 就是下一条的userid还得需要判断这个userid 是否存在 建议取第一种方法 设置userid 自动增长。oracle的 你就写一个自动增长的函数 就可以了。lz 你解释的不详细。up..... 数据库中好像有一个ExcuteScalar获取数据返回值的第一列,就能获取该值了 不是很明白你的问题,试着给你回答一下:如果是ORACLE数据库,先在数据库中建立对应的序列,在程序里直接取序列值作为UserID ,然后再入库,此时不需要再查询数据库,这样效率比较高。如果是其它数据库你也可以考虑类似实现。希望能对你有所帮助 我是要insert数据,数据库里有一个字段UserId ,是自动增长的,需要取出来, ,, 设id自增,插入一条 再获取最大的id返回 插入一条新数据后,如果id那列是自增的,select @@identity会自动返回这个新的id回来 你是用sql语句直接查询么insert xxxx.......对么如果是这样 只要在语句后 加上select @@identity然后执行这个语句就会获得你的插入的数据的 ID 返回即可 INSERT INTO 表名 (item_name,item_code) VALUES (@item_name,@item_code)SELECT @@IDENTITY insert table () values ( ) select @@identity 不是 ,是从Visual studio 里 这是我的代码,望指教: /// <summary> /// 增加用户数据 /// </summary> /// <param name="UserName"></param> /// <param name="pwd"></param> /// <param name="Email"></param> /// <returns></returns> public int AddMessage(string UserName,string pwd , string Email,int level,double time) { string Data = "server=.;DataBase=QQ;Integrated Security=SSPI"; SqlConnection conn = new SqlConnection(Data); int k; try { conn.Open(); StringBuilder bu = new StringBuilder(); bu.AppendFormat(" insert into UserInfo values('{0}','{1}','{2}','{3}','{4}');select @@identity", UserName, pwd, Email, level, time); SqlCommand comm = new SqlCommand(bu.ToString(),conn); k = Convert.ToInt32(comm.ExecuteScalar()); } catch (Exception e) { Console.WriteLine("出现异常!" + e.Message); k= -1; } finally { conn.Close(); } return k; } 问题解决了,谢谢各位!以为是insert```和select @@identity一起执行,我被误导了 ,错了 ,还是现在想想学编程思路很重要,没思路,没代码! 明天结贴啊! C#调用WinRar命令行压缩,文件夹包含子文件夹如何压缩 求Winform上传图片代码,急急急。 GDI+如何填充曲线区域颜色 C# winform程序 怎么向ftp文件服务器上传文件?? 在线等。。。 如何获取XML文件中的属性 关于JET的问题 如何在RichTextBox中实现象Word的“编号”功能? 小弟初学c# 问一个关于接口继承的问题请那位大虾解决以下 c#中有没有只判断时间的函数,不包括日期。 VS.Net2003中的WEB共享问题 请教,如何学sql server 两个小问题,请求解决|两个小问题,请求解决
UserID是标识列。
我在一个类里自定了个方法连接数据库操作向数据库里增加数据, 再建个类调用这个方法, 怎么把这个UserID 的值取出来??
除非userID有默认值或者自动生成等。如果是自动增长的ID那么直接在插入语句后 select @@identity 返回这个值到DS中。如果是其他类型的,都可以再插入的时候获得
一个完整的例子。
或是 取最大的userid: select max(userid) from usrinfo //结果+1 就是下一条的userid
还得需要判断这个userid 是否存在
建议取第一种方法 设置userid 自动增长。oracle的 你就写一个自动增长的函数 就可以了。lz 你解释的不详细。
up.....
数据库中好像有一个ExcuteScalar获取数据返回值的第一列,就能获取该值了
如果是ORACLE数据库,先在数据库中建立对应的序列,在程序里直接取序列值作为UserID ,然后再入库,此时不需要再查询数据库,这样效率比较高。如果是其它数据库你也可以考虑类似实现。
希望能对你有所帮助
insert xxxx.......
对么
如果是这样 只要在语句后 加上
select @@identity
然后执行这个语句
就会获得你的插入的数据的 ID
返回即可
SELECT @@IDENTITY
不是 ,是从Visual studio 里
/// 增加用户数据
/// </summary>
/// <param name="UserName"></param>
/// <param name="pwd"></param>
/// <param name="Email"></param>
/// <returns></returns>
public int AddMessage(string UserName,string pwd , string Email,int level,double time)
{
string Data = "server=.;DataBase=QQ;Integrated Security=SSPI";
SqlConnection conn = new SqlConnection(Data);
int k;
try
{
conn.Open(); StringBuilder bu = new StringBuilder();
bu.AppendFormat(" insert into UserInfo values('{0}','{1}','{2}','{3}','{4}');select @@identity", UserName, pwd, Email, level, time);
SqlCommand comm = new SqlCommand(bu.ToString(),conn); k = Convert.ToInt32(comm.ExecuteScalar());
}
catch (Exception e)
{
Console.WriteLine("出现异常!" + e.Message);
k= -1;
}
finally
{
conn.Close();
}
return k;
}