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

c#插入sql数据返回主键值
我调用类方法插入的数据
        public static string  insert(string sql, params SqlParameter[] parameters)
        {
            string connstr = ConfigurationManager.ConnectionStrings["conn"].ConnectionString;
            SqlConnection conn = new SqlConnection(connstr);
            conn.Open();
            SqlCommand cmd = conn.CreateCommand();
            cmd.CommandText = sql;
            foreach (SqlParameter a in parameters)
            {
                cmd.Parameters.Add(a);
            }
怎么返回刚插入的数据的主键值啊。。return 后面怎么写啊!
或者怎么改啊!!
------最佳解决方案--------------------
在写一句语句string sql='select @@identity'
再重数据库取一次,或者可以用top 1再去一次
------其他解决方案--------------------


select SCOPE_IDENTITY

------其他解决方案--------------------
把SQL换成存储过程,里面写上插入语句,插入成功时获取主键值作为存储过程返回值
------其他解决方案--------------------
string sql=“select .....”

sql+="select @@identity";

调用读取sql语句的方法
------其他解决方案--------------------
返回主键值,需要从数据库再取一次。
------其他解决方案--------------------
建议去.NET问问
------其他解决方案--------------------
insert into [tablename]
(lie1,lie2) output [tablename].lie_id values(@lie1,@lie 2)
------其他解决方案--------------------
~~~写个过程,插入时调用他,返回主键~~
------其他解决方案--------------------
引用:
把SQL换成存储过程,里面写上插入语句,插入成功时获取主键值作为存储过程返回值

这样真的可以...
------其他解决方案--------------------
--不知道有没有
--IDENT_CURRENT 返回为任何会话和任何作用域中的特定表最后生成的标识值。
--语法:IDENT_CURRENT('table_name')


--@@IDENTITY 返回为当前会话的所有作用域中的任何表最后生成的标识值。
--语法:@@IDENTITY

--SCOPE_IDENTITY 返回为当前会话和当前作用域中的任何表最后生成的标识值。
-- 语法:SCOPE_IDENTITY()   

------其他解决方案--------------------
[quote1=引用:]
SQL code??



12345678910

--不知道有没有 --IDENT_CURRENT 返回为任何会话和任何作用域中的特定表最后生成的标识值。 --语法:IDENT_CURRENT('table_name')     --@@IDENTITY 返回为当前会话的所有作用域中的任何表最后生成的标识值。 --语法:@@IDENTITY   --SCOPE_IDENTITY 返……[/quote]