C#.net mysql There is already an open datareader associated with this command引发的问题

【参考】There is already an open datareader associated with this command引发的问题

我在语句中并未使用 DataReader,未何也提示同样的错误,这个DataReader隐藏在哪里,我给大家在这里指出来,由于本人研究的还不够深入,只知道有一种方法的调用后会生成 DataReader,我想这也是绝大多数人遇到头疼的问题。

在使用数据库更新或插入语句时,大家通常使用 SqlCommand 的 ExecuteNonQuery() 方法,并且前提是定义了一个公共的数据库连接(如果每次查询时都生成新连接的话不会存在这个问题,但那样数据库占用的资源相对会高很多),在ExecuteNonQuery() 后,内部会生成一个空的 DataReader 对象,并当当前的数据库连接关闭掉后,该 DataReader 才会释放。因此在大家使用更新方法时,推荐使用 using 关键字,它作为语句,可以将它所定义范围内的对象都释放掉。

1、解决方法是在ConnectionString中加上一个参数“MultipleActiveResultSets”, 将其值设置为true。X

server=192.168.9.24;database=FLGL;user=sa;password=1231q2w34;MultipleActiveResultSets=true

2、连接未关闭。 连接的当前状态为正在连接。√

using (FLGLConn = new SqlConnection(FLGLConnStr))

{

SqlCommand cmd = new SqlCommand();

DataSet ds = new DataSet();

cmd.CommandType = CommandType.StoredProcedure;

cmd.CommandText = procName;

if (paramArray != null)

cmd.Parameters.AddRange(paramArray);

try

{

//用SqlDataAdapter 就不必写conn.open()和conn.close(),这是多余的。

cmd.Connection = FLGLConn;

SqlDataAdapter sda = new SqlDataAdapter(cmd);

sda.Fill(ds);

}

catch (Exception ex)

{

Log.WriteErrorLog(ex.Message + ex.Source + " -- sql 语句为:" + procName);

}

finally

{

FLGLConn.Close();

}

return ds;

}

原文地址:https://www.cnblogs.com/xdot/p/9586118.html

时间: 2024-08-29 16:59:26

C#.net mysql There is already an open datareader associated with this command引发的问题的相关文章

使用otl,报错:mysql Commands out of sync; you can't run this command now

1.代码如下: void TestCache(otl_connect& otlConn) { try { char sql[1024] = {0}; sprintf(sql,"call test1(1)"); otl_stream stream(100, sql, otlConn,otl_implicit_select); int id; while(!stream.eof()) { stream>>id; char sql2[1024] = {0}; sprint

mysql客户端(Navicat)远程登录操作遇到问题1142 - XXX command denied to ×××

新建的dbtest用户,访问新建立的TestDB数据库每次都提示1142错误(已经对数据库TestDB赋予了所有权限) 解决方法: Mysql命令: GRANT SELECT ON mysql.* TO [email protected]'%' identified by dbtest; 将对应的表权限赋予给该用户即可

R语言连接MySQL报错:could not run statement: The used command is not allowed with this MySQL version

版本说明 R版本:3.5 MySQL版本:8.0 RMySQL版本:0.10.19 情景说明: 使用RMySQL成功连接到MySQL数据库,可以进行查询操作,但在插入时报错,提示信息如下: con <- dbConnect(MySQL(), host="127.0.0.1", dbname="epid", user="root", password="1234")dbWriteTable(con,"city_d

&#8203;Keepalive实现mysql双主热备

Keepalive实现mysql双主热备 环境描述: OS: CentoOS6.6_X64 Node1:172.16.10.1 Node2:172.16.10.2 VIP:172.16.10.10 1.配置主机互信 Node1: [[email protected]~]# ifconfig eth0 eth0      Link encap:Ethernet  HWaddr 00:0C:29:11:21:56            inet addr:172.16.100.1  Bcast:17

docker上运行mysql服务

背景: 现如今不管什么服务和应用基本都可以在docker里跑一跑了,但是在我个人的印象中,像数据库这种比较重要大型且数据容易受伤的应用是不适合在docker里跑的.但是也有很多人尝试在docker中跑mysql等数据库,所以也试着尝试一下.(好吧,重点是领导喜欢~~) 获取镜像: mysql的镜像可以自己用dockerfile制作一个,或者直接到官方的docker镜像库中下载,本文用的是官方镜像. # docker pull mysql # docker images REPOSITORY   

MySQL 高可用MHA安装部署以及故障转移详细资料汇总 转

http://blog.itpub.net/26230597/cid-87082-list-2/ 1,简介 1.1mha简介 MHA,即MasterHigh Availability Manager and Tools for MySQL,是日本的一位MySQL专家采用Perl语言编写的一个脚本管理工具,该工具仅适用于MySQLReplication(二层)环境,目的在于维持Master主库的高可用性. MHA(Master High Availability)是自动的master故障转移和Sl

cmd 窗口配置mysql数据库

运行-cmd 进入command 窗口 首先cd 到mysql目录下的bin的 路运行-cmd 进入command 窗口 首先cd 到mysql目录下的bin的路径.注意cd D盘时直接输入D:就ok.其余的要 "cd bin". 1.mysql>show -> databases; 查看数据库 1.mysql>create database mydb1 chaset utf8; 新建名字为mydb1 编码格式为utf8的数据库.

搞定linux上MySQL编程(四):mysql权限管理

[版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途] mysql中提供了比较完整的安全/权限管理系统,下面简单介绍权限的原理和使用. mysql数据库安装完成启动之后,能看当前数据库列表可以看到一个mysql的数据库: mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | |

MySQL 採用Xtrabackup对数据库进行全库备份

1,xtrabackup简单介绍 关于数据库备份以及备份工具.參考:http://blog.itpub.net/26230597/viewspace-1460065/,这里来介绍xtrabackup已经怎样使用xtrabackup进行对数据库的全备份已经恢复. 2,xtrabackup下载 下载地址为:http://www.percona.com/downloads/XtraBackup/ Chorm浏览器以下.在"DOWNLOADPERCONA XTRABACKUP"以下,选择版本号