都不知道你问的是插入的行数,还是总行数?
插入数据有很多方式,insert into ……,select into……都可以,就看你是怎么插的了,实在不行插之前查一次count(*),插之后查一次COUNT(*)喽!
插入行数
我的意思是使用了存储过程插入数据。。获取返回行数怎么写
ADO.net中的ExecuteNonQuery()返回的就是int类型,也就是影响的行数。
/// <summary> ///执行一个不需要返回值的SqlCommand命令,通过指定专用的连接字符串。 /// 使用参数数组形式提供参数列表 /// </summary> /// <remarks> /// 使用示例: /// int result = ExecuteNonQuery(connString, CommandType.StoredProcedure, "PublishOrders", new SqlParameter("@prodid", 24)); /// </remarks> /// <param name="connectionString">一个有效的数据库连接字符串</param> /// <param name="commandType">SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)</param> /// <param name="commandText">存储过程的名字或者 T-SQL 语句</param> /// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param> /// <returns>返回一个数值表示此SqlCommand命令执行后影响的行数</returns> public static int ExecuteNonQuery(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters) { SqlCommand cmd = new SqlCommand(); using (SqlConnection conn = new SqlConnection(connectionString)) { //通过PrePareCommand方法将参数逐个加入到SqlCommand的参数集合中 PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters); int val = cmd.ExecuteNonQuery(); //清空SqlCommand中的参数列表 cmd.Parameters.Clear(); return val; } } /// <summary> ///执行一条不返回结果的SqlCommand,通过一个已经存在的数据库连接 /// 使用参数数组提供参数 /// </summary> /// <remarks> /// 使用示例: /// int result = ExecuteNonQuery(conn, CommandType.StoredProcedure, "PublishOrders", new SqlParameter("@prodid", 24)); /// </remarks> /// <param name="conn">一个现有的数据库连接</param> /// <param name="commandType">SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)</param> /// <param name="commandText">存储过程的名字或者 T-SQL 语句</param> /// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param> /// <returns>返回一个数值表示此SqlCommand命令执行后影响的行数</returns> public static int ExecuteNonQuery(SqlConnection connection, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters) { SqlCommand cmd = new SqlCommand(); PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters); int val = cmd.ExecuteNonQuery(); cmd.Parameters.Clear(); return val; } /// <summary> /// 执行一条不返回结果的SqlCommand,通过一个已经存在的数据库事物处理 /// 使用参数数组提供参数 /// </summary> /// <remarks> /// 使用示例: /// int result = ExecuteNonQuery(trans, CommandType.StoredProcedure, "PublishOrders", new SqlParameter("@prodid", 24)); /// </remarks> /// <param name="trans">一个存在的 sql 事物处理</param> /// <param name="commandType">SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)</param> /// <param name="commandText">存储过程的名字或者 T-SQL 语句</param> /// <param name="commandParameters">以数组形式提供SqlCommand命令中用到的参数列表</param> /// <returns>返回一个数值表示此SqlCommand命令执行后影响的行数</returns> public static int ExecuteNonQuery(SqlTransaction trans, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters) { SqlCommand cmd = new SqlCommand(); PrepareCommand(cmd, trans.Connection, trans, cmdType, cmdText, commandParameters); int val = cmd.ExecuteNonQuery(); cmd.Parameters.Clear(); return val; }
@青 蛙: 谢谢。。可以下强类型做出来么?
select @@ROWCOUNT
不明白怎么用哦。要用到强类型
你可以把这句写到你的存储过程里,那么存储过程就会多一个结果集,你读出来就可以了
或者你就直接调用存储过程,executeNonQuery,它的返回值是一个int型,就是影响的行数
如果你的存储过程是执行多次更新,你在每次更新后累加@@ROWCOUNT,返回给客户端就可以了
如果你的表有一个自增列 可以用到select @@identity就是插入数据是产生的值
表的id是自增的,这个该怎么写?
我的存储过程是这样写的:
create proc insertQuestion
@qname varchar(20),
@qtitle varchar(200),
@qcontent varchar(1000),
@qdatetime dateTime
as
begin
insert into question(qname,qtitle,qcontent,qdatetime)values(@qname,@qtitle,@qcontent,@qdatetime)
return @@rowcount
end
改return @@rowcount
为 select @@rowcount
就可以,或者直接取@identity,如果返回null,就失败啊,就一行,你还要什么影响行数
取到插入成功的那一行所在数据的id,返回为NULL时肯定插入不成功的,所以判定是失败 select @@identity作为一个返回值就行了
这个很简单 如 select * from table
现在你想看他影响的行数 可以用如下语句
select @@RowCount 返回影响行数