首页 新闻 会员 周边 捐助

数据库插入一条记录,返回记录ID问题

0
悬赏园豆:10 [已关闭问题] 关闭于 2008-07-22 09:40
<P>SQLSERVER2000&nbsp; </P> <P>我插入一条数据,要求返回插入行的ID。</P> <P>我存储过程里写的是 return @@identity</P> <P>C#里 我用 ExecuteScalar 取得的总是0.</P> <P>怎么回事</P>
问题补充: SqlHelper 里有方法可以取得返回output参数或return值吗? 解决了,可以用return 也可以set 或 select 道理都是一样的。我原来用的BIN不支持返回参数,SqlHelper也不支持。后来改用动软的BIN就解决了。
超级管理员的主页 超级管理员 | 初学一级 | 园豆:80
提问于:2008-07-20 10:44
< >
分享
所有回答(5)
0
步骤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; }
红尘中迷茫 | 园豆:60 (初学一级) | 2008-07-20 13:06
0
你的id是自动增长的吧. 用这样一条语句: select max(id) from table 这样了
侯垒 | 园豆:3435 (老鸟四级) | 2008-07-20 13:46
0
试试 select @@identity 代替返回值
一点浩然气 | 园豆:105 (初学一级) | 2008-07-20 14:48
0
SELECT SCOPE_IDENTITY()
Leox | 园豆:461 (菜鸟二级) | 2008-07-20 16:55
0
呵呵 你这样的存储过程里好像不能用return 关键字 只能定义一个输出参数 在里面给它赋值 用set or select 都可以
yeyang | 园豆:418 (菜鸟二级) | 2008-07-20 19:14
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册