[已关闭问题] 数据库插入一条记录,返回记录ID问题
提问时间: 2008-07-20 10:44
悬赏分:10 提问时间2008/7/20 10:44:49 问题为何被关闭 浏览:257 次

SQLSERVER2000 

我插入一条数据,要求返回插入行的ID。

我存储过程里写的是 return @@identity

C#里 我用 ExecuteScalar 取得的总是0.

怎么回事


问题补充:SqlHelper 里有方法可以取得返回output参数或return值吗?

解决了,可以用return 也可以set 或 select 道理都是一样的。我原来用的BIN不支持返回参数,SqlHelper也不支持。后来改用动软的BIN就解决了。

(5)
步骤1:调试一下存储过程,看看return的是不是0,如果不是,继续步骤2 步骤2:将你的ExecuteScalar换成一下函数 /// <summary> /// 执行存储过程,返回影响的行数 /// </summary> /// <param name="storedProcName">存储过程名</param> /// <param name="parameters">存储过程参数</param> /// <param name="rowsAffected">影响的行数</param> /// <returns></returns> public static int RunProcedure(string storedProcName, IDataParameter[] parameters, out int rowsAffected) { using (SqlConnection connection = new SqlConnection(ConnectionString)) { int result; connection.Open(); SqlCommand command = BuildIntCommand(connection, storedProcName, parameters); rowsAffected = command.ExecuteNonQuery(); result = (int)command.Parameters["ReturnValue"].Value; //Connection.Close(); return result; } } /// <summary> /// 创建 SqlCommand 对象实例(用来返回一个整数值) /// </summary> /// <param name="storedProcName">存储过程名</param> /// <param name="parameters">存储过程参数</param> /// <returns>SqlCommand 对象实例</returns> private static SqlCommand BuildIntCommand(SqlConnection connection, string storedProcName, IDataParameter[] parameters) { SqlCommand command = BuildQueryCommand(connection, storedProcName, parameters); command.Parameters.Add(new SqlParameter("ReturnValue", SqlDbType.Int, 4, ParameterDirection.ReturnValue, false, 0, 0, string.Empty, DataRowVersion.Default, null)); return command; }
2个月前   回答者:红尘中迷茫 - 初学一级
你的id是自动增长的吧. 用这样一条语句: select max(id) from table 这样了
2个月前   回答者:侯垒 - 小虾三级
试试 select @@identity 代替返回值
2个月前   回答者:一点浩然气 - 初学一级
SELECT SCOPE_IDENTITY()
2个月前   回答者:Leox - 初学一级
呵呵 你这样的存储过程里好像不能用return 关键字 只能定义一个输出参数 在里面给它赋值 用set or select 都可以
2个月前   回答者:yeyang - 菜鸟二级
   您需要登录以后才能回答!
 

我要提问

我的问题


快到期问题

> 问题排行榜

相关内容

相关链接