当前位置:首页 » 存储配置 » sqldatareader存储过程

sqldatareader存储过程

发布时间: 2022-05-08 16:37:51

sqlDataReader sqldatareader = sqlcommand.ExecuteReader();出现异常

1、当SqlDataReader没有关闭之前,数据库连接会一直保持open状态,所以在使用SqlDataReader时,使用完毕应该马上调用SqlDataReader.Close()关闭它。 2、一个连接只能被一个SqlDataReader使用,这也是为什么要尽早关闭SqlDataReader的原因。 3、使用完SqlDataReader后,你可以在程序中显示的调用数据库连接对象的Close方法关闭连接,也可以在调用Command对象的ExecuteReader方法时传递CommandBehavior.CloseConnection 这个枚举变量,这样在调用SqlDataReader的Close方法时会自动关闭数据库连接。 4、使用SqlDataReader时尽量使用和数据库字段类型匹配的方法来取得相应的值,比如对于整形的字段使用GetInt32,对字符类型的字段使用GetString。这样会减少因为类型不一致而额外增加的类型转换操作。 5、使用SqlDataReader获取多条记录时,如果没有访问到取出记录的末尾时想要关闭SqlDataReader,应该先调用Command 对象的Cancel方法,然后再调用SqlDataReader的Close方法。Command对象的Cancel方法使得数据库不再把SqlDataReader中未访问的数据发送到调用端,如果不调用此方法直接关闭SqlDataReader,数据库会发送和SqlDataReader未访问数据等长的空数据流到调用端。 6、如果想通过SqlCommand的ExecuteReader方法获取存储过程的返回值或者输出参数,必须先调用SqlDataReader的Close 方法后,才能获取输出参数的值或者返回值。 7、如果使用SqlDataReader只返回一条记录,那么在调用Command的ExecuteReader方法时,指定 CommandBehavior.SingleRow参数,这个参数的是否使用对SQL Server .NET Data Provider没有什么影响,但是当你使用OLE DB .NET Data Provider时,指定这个参数后,DataPrivider内部将使用IRow接口,而不是使用相对来说耗费资源的IRowSet接口。
望采纳,谢谢

⑵ sql中如何通过存储过程返回结果集

引用
4

oraclefans_
的回复:想麻烦了。。你直接返回游标就是一个结果集合。。CREATE
OR
REPLACE
PROCEDURE
USP_RETN_VAL(
RETN_VAL_CUR
OUT
sys_refcursor)ISBEGIN
OPEN
RETN_VAL_CUR
FOR
SELECT
*
FROM
TBL1;END;调用declare
cur
sys_refcurso……谢谢
但是我是想执行一个存储过程后,直接返回表里所有数据,不要再去操作游标。

⑶ 求助C# SqlDataReader sdr = cmd.ExecuteReader(); 为什么会出现“未找到存储过程”的问题 原码见补充

cmd.CommandText = _sql;
后面增加一句:
cmd.CommandType = CommandType.Text;

意思是 告诉 系统, 本次执行的, 是一个 sql 查询, 不是存储过程。
注:
CommandType.Text 意思是:SQL 文本命令。
CommandType.StoredProcere 意思是:存储过程的名称。
CommandType.TableDirect 意思是:表的名称。

⑷ SqlDataReader通过存储过程读取只出现一条数据

-- 测试返回结果集的存储过程
CREATE PROCEDURE testProc
AS
BEGIN
SELECT 'Hello 1' AS A, 'World 1' AS B UNION ALL
SELECT 'Hello 2' AS A, 'World 2' AS B;
END
go





/// <summary>
/// 测试执行存储过程. 返回结果集合.
/// </summary>
/// <param name="conn"></param>
private void CallProcereWithReturnData(SqlConnection conn)
{
// 创建一个 Command.
SqlCommand testCommand = conn.CreateCommand();
// 定义需要执行的SQL语句.
testCommand.CommandText = "testProc";
// 定义好,本次执行的类型,是存储过程.
testCommand.CommandType = CommandType.StoredProcere;
// 执行SQL命令,结果存储到Reader中.
SqlDataReader testReader = testCommand.ExecuteReader();
// 处理检索出来的每一条数据.
while (testReader.Read())
{
// 将检索出来的数据,输出到屏幕上.
Console.WriteLine("调用函数:{0}; 返回:{1} - {2}",
testCommand.CommandText, testReader[0], testReader[1]
);
}
// 关闭Reader.
testReader.Close();
}




我这个测试过可行的。 你参考一下。

⑸ 存储过程 如何返回 SqlDataReader

说的简单点。。。
你自己会直接写SQL语句返回SqlDataReader 吧。
那很简单。你用存储过程时候。把参数传递进去,然后
SqlCommand调用时候。(假设已经SqlCommand cmd=new SqlCommand();)
cmd的CommandType设置为存储过程。。
其他没任何区别

还有,对你自己写的代码评价~。。代码你都写出来了。
自己执行下看看不就知道了,还来网络提问。。。。看不明白~
实践出真知~自己多动动手

....存储过程肯定不能返回Reader。
Reader是.net的对象。
只要你的存储过程是检索性质的存储过程,就是能select这种检索的。就可以返回。

⑹ 急求帮助! SqlDataReader dr = cmd.ExecuteReader(); 找不到存储过程dbo.supesoftpage

你需要确认你的连接对应的数据库中是否有该存储过程。别人无法帮到你的。

⑺ sql 存储过程

@where的值是 and a.parm_obj_id =4399

.... where a.parm='aa' @where 这是不对的
如果你必须要这样做的话,用其他方式吧

declare @SQL nvarchar(4000)
set @SQL = 'select * from tb where a.parm=''aa'' ' + @where
exec sp_executesql @sql

⑻ 请教DataReader执行一个单个值的查询,是存储过程快一些还是写sql语句快一些

速度差不多,不涉及到 多个查询,SQL语句直接查询还是快点。

如果有多条SQL语句,或是设计到一些复杂的数据库操作 才建议使用存储过程!

⑼ sql 存储过程,返回数据集 并返回总行数

1、打开SQLServerManagementStudio找到存储过程所在的数据库。在对象资源管理器详细信息中可以看到存储过程的文件夹

⑽ asp.net 存储过程+SqlDataReader的问题。求助

你可以用一个output把它的值传出来啊。

热点内容
android线程调用 发布:2024-09-22 21:33:11 浏览:796
访问宁静 发布:2024-09-22 21:31:09 浏览:246
使用命令窗口编译java 发布:2024-09-22 21:25:23 浏览:163
md5加密函数 发布:2024-09-22 21:02:32 浏览:702
成都php工资 发布:2024-09-22 20:55:16 浏览:438
sql表删除恢复 发布:2024-09-22 20:50:12 浏览:443
python字符串查找中文 发布:2024-09-22 20:50:12 浏览:596
算法有多少种 发布:2024-09-22 20:48:44 浏览:332
艾薇多多安卓版怎么样 发布:2024-09-22 20:48:02 浏览:801
linux工程师证书 发布:2024-09-22 20:07:37 浏览:413