- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我很高兴以前有人问过这个问题,但是,我在过去 5 天里一直在搜索 SO 和网络,但尚未找到解决我的问题的方法。
我正在尝试使用 C# 从 MySQL 数据库检索记录。
代码编译得很好,但是当我测试应用程序并尝试将数据绑定(bind)到 DataTable() 时,MySqlDataReader 抛出以下异常
"Invalid Attempt to Read When Reader Is Closed"
我无法诊断该问题;据我所知,在我尝试读取之前,阅读器并未关闭。
方法如下:
/// <summary>
/// Performs a select statement
/// </summary>
/// <param name="query">String of the SQL Query</param>
/// <param name="parameters">List of SQL Parameters</param>
/// <returns>DataTable</returns>
public DataTable SelectQuery(string query, List<MySqlParameter> parameters)
{
MySqlConnection connection = new MySqlConnection(connectionString);
MySqlCommand cmd = new MySqlCommand(query, connection);
foreach(MySqlParameter p in parameters)
{
cmd.Parameters.Add(p);
}
connection.Open();
DataTable dt = new DataTable();
dt.Load(cmd.ExecuteReader());
return dt;
}
实际的数据库连接工作正常,我在 MySqlConnection 上放置了一个监视,并且连接正在按预期打开。
我将以下查询传递给此方法:
string query = "SELECT IDS_USER, USRNM, PSSWRD, USR_SALT FROM factUser WHERE USRNM = ?username";
我在 MySql Workbench 中进行了测试,它返回了正确的数据。
当我查看 MySqlCommand 时,参数已按原样添加到命令中。
任何帮助将不胜感激,因为我完全被难住了!
最佳答案
您已经很接近了,但您必须将 ExecuteReader()
函数设置为 MySqlDataReader
。另外,您应该真正养成使用 using
语句的习惯,尤其是在 SQL 相关事务中,如果您没有正确处理连接,您很快就会耗尽。使用 using
语句会自动处理 using
语句中的项目。
带有适当变量集的代码
MySqlConnection connection = new MySqlConnection(connectionString);
MySqlCommand cmd = new MySqlCommand(query, connection);
foreach(MySqlParameter p in parameters)
{
cmd.Parameters.Add(p);
}
connection.Open();
DataTable dt = new DataTable();
MySqlDataReader reader = cmd.ExecuteReader();
dt.Load(reader);
return dt;
使用适当的 using 语句
using(MySqlConnection connection = new MySqlConnection(connectionString)){
using(MySqlCommand cmd = new MySqlCommand(query, connection)){
foreach(MySqlParameter p in parameters)
{
cmd.Parameters.Add(p);
}
connection.Open();
DataTable dt = new DataTable();
using(MySqlDataReader reader = cmd.ExecuteReader()){
dt.Load(reader);
return dt;
}
}
}
关于c# - MySqlDataReader - 阅读器关闭时尝试读取无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46124889/
作为通过屏幕抓取将数据导入 WordPress 的项目的一部分,我将新旧 URL 的数据库表存储在 MySQL 数据库中。在下面的示例中,ExecuteReader 命令似乎没有返回任何数据(-1 行
我在 VB.NET 中有一个函数,可以在启动主应用程序之前对 MySQL 数据库的用户进行身份验证。这是函数的代码: Public Function authConnect() As Bool
这是我从 MySql 中的表中选择数据的代码: MySqlDataReader msdr; MySqlConnection connect = new
MySqlCommand status = new MySqlCommand("select name_ru from request_status where id = '50'", con
这个问题在这里已经有了答案: Return DataReader from DataLayer in Using statement (4 个答案) 关闭 10 年前。 好的,我的代码目前是:
这个问题已经有答案了: What 'length' parameter should I pass to SqlDataReader.GetBytes() (2 个回答) 已关闭 10 年前。 我对
我有一个代码,它只是从 Mysql 中的列值中获取无符号字节。 MySqlDataReader reader = MasterServer.Instance.Sql_Connection.Reader
我在将信息从数据库加载到标签和图片框中时遇到问题。我认为我的代码可以正确执行我想要的操作,但我猜不是,因为它不起作用。下面是我正在使用的代码。对于数据库中的图片列,我存储图片的路径,而不是实际的 bl
我正在开发一个 C# 项目,目前我遇到了 MySQL 数据读取器的问题。 下面是我正在使用的代码 try { using (ConnectMySQLDB db = new ConnectMyS
我有两个数据库,一个是本地的,另一个是远程的。我可以使用 MySqlDataReader 从本地获取数据,但即使我成功连接也无法从远程获取数据。我尝试创建另一个 MySqlDataReader 对象,
这是 atm 代码: if (e.KeyCode == Keys.Enter && chatTextRTB.Text.Length > 0) { con.
我很高兴以前有人问过这个问题,但是,我在过去 5 天里一直在搜索 SO 和网络,但尚未找到解决我的问题的方法。 我正在尝试使用 C# 从 MySQL 数据库检索记录。 代码编译得很好,但是当我测试应用
我正在使用 MySql 和 C#。我有这个代码: public List selectStudent() { List stud = new List();
我需要在我的 MySQL 结果中将“,”替换为“.” string.Replace(",", "."); 当前代码: mysql.Connection.Open(); mysql.Co
我正在尝试从表中提取值,但 MySQLDataReader 似乎不想与我合作。 conn = new MySqlConnection(Credentials); conn.Open(); MySqlC
我想在调用者上返回值,例如我可以使用 asd["columnname"] 但我收到一个错误,示例/代码如下。 我有这个代码 public static MySqlDataReader QueryRes
存储过程: BEGIN SELECT * FROM `user` WHERE `EmailAddress`= @p0 AND `Password` = @p1; END @p0 和@p1 是 Varc
在数据库中插入或更新某些内容后使用 MySqlDataReader 时,我收到 System.NullReferenceException。 这是我的代码: protected void Page_L
有没有办法访问和分配高列的第 (i+1) 个或第 (I-1) 个值? 我的代码如下: public static List Read_DB1(string date, MySqlConnection
我有一个类,我的 MysqlConnection 就在里面: public class DB { private static MySqlConnection _Connection;
我是一名优秀的程序员,十分优秀!