关键词:
【中文标题】C# - 将 DataReader 转换为 DataTable【英文标题】:C# - Converting DataReader to DataTable 【发布时间】:2021-06-23 15:24:30 【问题描述】:我想将 DataReader 转换为 DataTable 以显示数据库中的列表(demoClients)中的所有客户。
目前我有这个:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using MySqlConnector;
using ProjectDatabase.Controllers;
using System.Data;
using System.Data.Common;
namespace ProjectDatabase.Models
public class demoClientsQuery
public AppDb Db get;
public demoClientsQuery(AppDb db)
Db = db;
public async Task<demoClients> FindAllClientsAsync(int id)
using var cmd = Db.conDemo.CreateCommand();
cmd.CommandText = @"Query";
cmd.Parameters.Add(new MySqlParameter
ParameterName = "@id_customer",
DbType = DbType.Int32,
Value = id,
);
MySqlDataReader dataReader = cmd.ExecuteReader();
DataTable dataTable = new DataTable();
dataTable.Load(dataReader);
var result = await ReadAllAsync(dataTable);
return result.Count > 0 ? result[0] : null;
public async Task<List<demoClients>> LatestClientsAsync()
using var cmd = Db.conDemo.CreateCommand();
cmd.CommandText = @"Query";
var aa = await LatestClientsAsync2();
MySqlDataReader dataReader = cmd.ExecuteReader();
DataTable dataTable = new DataTable();
dataTable.Load(dataReader);
return await ReadAllAsync(dataTable);
public async Task<DataTable> LatestClientsAsync2()
using var cmd = Db.conDemo.CreateCommand();
cmd.CommandText = @"Query";
//return await ReadAllAsync(await cmd.ExecuteReaderAsync());
return await ToDataTable(cmd);
private async Task<DataTable> ToDataTable(MySqlCommand cmd)
cmd.CommandType = CommandType.Text;
using (DbDataAdapter dataAdapter = new MySqlDataAdapter(cmd))
cmd.CommandType = CommandType.Text;
DataTable data = new DataTable();
dataAdapter.Fill(data);
return data;
private async Task<List<demoClients>> ReadAllAsync(DataTable dataTable)
var adb_demo_clients = new List<demoClients>();
using (dataTable)
foreach (DataRow dr in dataTable.Rows)
int id_customer = Convert.ToInt32(dr["id_customer"]);
string delivery_person_name = Convert.ToString(dr["delivery_person_name"]);
string firstname = Convert.ToString(dr["firstname"]);
string lastname = Convert.ToString(dr["lastname"]);
string email = Convert.ToString(dr["email"]);
return adb_demo_clients;
我遇到的唯一问题是它什么都不返回,它返回空,我的代码中的某些东西没有从我的数据库中返回我的数据。
任何帮助将不胜感激。
感谢您的宝贵时间。
【问题讨论】:
doesn't return nothing
- 所以它确实返回了一些东西
您的MySqlConnection
和您的connectionString
在哪里?你能连接到数据库吗?或者你在数据表中转换你的回报有问题吗?
直到DataTable
派生自IDisposable
,您可以将其放入using
语句中
您知道您的方法ReadAllAsync
只读取数据表行但从不向列表中添加任何内容adb_demo_clients
?
foreach (DataRow dr in dataTable.Rows) demoClients d = new demoClients(); d.Id = Convert.ToInt32(dr["id_customer"]);; //fill all you fields that you need
所以在那之后你必须在你的列表中添加adb_demo_clients.add(d);
(在你关闭你的foreach
之前)
【参考方案1】:
您必须在 foreach
内的 ReadAllAsync
方法上将项目添加到 adb_demo_clients
列表中:
private async Task<List<demoClients>> ReadAllAsync(DataTable dataTable)
var adb_demo_clients = new List<demoClients>();
using (dataTable)
foreach (DataRow dr in dataTable.Rows)
demoClients d = new demoClients();
d.id_customer = Convert.ToInt32(dr["id_customer"]);
d.delivery_person_name = Convert.ToString(dr["delivery_person_name"]);
// all fields that you need
...
// Add the item in your List
adb_demo_clients.add(d);
return adb_demo_clients;
【讨论】:
C# - 无法将类型“IBM.Data.DB2.iSeries.iDB2DataReader”隐式转换为“System.Data.SqlClient.SqlDataReader”
】C#-无法将类型“IBM.Data.DB2.iSeries.iDB2DataReader”隐式转换为“System.Data.SqlClient.SqlDataReader”【英文标题】:C#-Cannotimplicitlyconverttype\'IBM.Data.DB2.iSeries.iDB2DataReader\'to\'System.Data.SqlClient.SqlDataReader\'【发布时间】:2018-01- 查看详情
如何将 DataSet a 转换为 DataReader?
】如何将DataSeta转换为DataReader?【英文标题】:HowcanIconvertDataSetatoaDataReader?【发布时间】:2011-04-0113:54:57【问题描述】:如何将DataSet转换为DataReader?【问题讨论】:你不能。如果您需要更多解释,请提供更多信息。我觉得你正... 查看详情
如何将 SQL 转换为 C#
】如何将SQL转换为C#【英文标题】:HowtotranslateSQLtoC#【发布时间】:2022-01-1321:58:35【问题描述】:我有一个如下所示的SQL查询:SELECTa.Date,CASEWHENa.Type=\'String1\'ORa.Type=\'String2\'THEN\'foo\'ELSE\'bar\'ENDASVisitType,DATEDIFF(d,(SELECTTOP1DateFROMdim.Dat 查看详情
将 C# DateTime 转换为 Javascript 日期
】将C#DateTime转换为Javascript日期【英文标题】:ConvertC#DateTimetoJavascriptDate【发布时间】:2013-07-3018:43:10【问题描述】:我在Javascript中有一个从MVC接收C#DateTime的函数。如果日期为空,则应返回“-”,如果是有效日期,则应返回格... 查看详情
如何轻松将 DataReader 转换为 List<T>? [复制]
】如何轻松将DataReader转换为List<T>?[复制]【英文标题】:HowcanIeasilyconvertDataReadertoList<T>?[duplicate]【发布时间】:2009-09-2309:14:58【问题描述】:我在DataReader中有数据,我想将其转换为List<T>。对此有什么可能的... 查看详情
当行尾有多余空格时,将 .dat 文件转换为 DataFrame
】当行尾有多余空格时,将.dat文件转换为DataFrame【英文标题】:Convert.datfileintoDataFramewhenthereisextrawhitespaceattheendofrows【发布时间】:2022-01-1404:29:24【问题描述】:我正在尝试将数据.dat文件转换为pandas数据框。但是,.dat文件在每... 查看详情
c#如何将查询后的结果放入list中
如果是用ADO读取的查询后的数据,建议使用DataReader,而不要把Dataset转换为List,List最好用强类型封装。使用DataReader只需要遍历一次就可以了,Dataset转换LIst要至少两次。代码大概如下:while(DataReader.read())List<类型>.Add(实体)... 查看详情
如何正确地将 DataReader 转换为 DTO/List<DTO>? [复制]
】如何正确地将DataReader转换为DTO/List<DTO>?[复制]【英文标题】:HowtoconvertaDataReadertoaDTO/List<DTO>properly?[duplicate]【发布时间】:2013-09-2107:30:26【问题描述】:我正在尝试找到一种将DataReader转换为DTO的简单方法(就像列名... 查看详情
datareader相关知识点
C#中提供的DataReader可以从数据库中每次提取一条数据。1.获取数据的方式[1]DataReader为在线操作数据,DataReader会一直占用SqlConnection连接,在其获得数据过程中其它操作不可以再使用SqlConnection连接对象。[2]DataSet为离线操作数据,Da... 查看详情
DataReader 循环查询中的 C# MySQL 查询
】DataReader循环查询中的C#MySQL查询【英文标题】:C#MySQLQueryinDataReaderloopquery【发布时间】:2013-05-2707:15:10【问题描述】:我在C#中有一个方法,它应该从mysql获取一些数据,然后将这些数据插入另一个表中。问题是,无论我尝试什... 查看详情
如何将 Matlab 变量转换为带有标题的 .dat(文本)文件
】如何将Matlab变量转换为带有标题的.dat(文本)文件【英文标题】:HowtoconvertMatlabvariablesto.dat(text)filewithheaders【发布时间】:2011-03-1112:08:46【问题描述】:已编辑问题:我在名为avg_data_models的变量中有2500行x100列数据。我还有250... 查看详情
mysql datareader找不到行c#
】mysqldatareader找不到行c#【英文标题】:mysqldatareadernotfindingrowsc#【发布时间】:2014-04-2712:47:34【问题描述】:我有一个关于c#和mysql的问题。我想制作一个连接到本地数据库的非常简单的登录表单。我的连接正常工作(经过测试... 查看详情
c#公共帮助类jsonhelper操作帮助类
...换动态类、object动态类转换json包、json转换object动态类、DataReader转换为Json、DataSet转换为Json、DataTable转成Json、Datatable转换为Json、格式化字符型日期型布尔型、过滤特殊字符 查看详情
无法在 DataReader.GetString() 中将“System.Int32”类型的对象转换为“System.String”类型
】无法在DataReader.GetString()中将“System.Int32”类型的对象转换为“System.String”类型【英文标题】:Unabletocastobjectoftype\'System.Int32\'totype\'System.String\'inDataReader.GetString()【发布时间】:2013-11-0402:58:33【问题描述】:我试图将数据库中... 查看详情
将 php 转换为 c#,将 curl 转换为 .net [关闭]
】将php转换为c#,将curl转换为.net[关闭]【英文标题】:Convertingphptoc#,curlto.net[closed]【发布时间】:2016-04-1808:17:23【问题描述】:我正在尝试将PHP文件转换为C#。问题是我不知道curl的等效.net命令。ob_start();$ret=curl_exec($ch);$content=ob_g... 查看详情
将 XML 转换为动态 C# 对象
】将XML转换为动态C#对象【英文标题】:ConvertingXMLtoadynamicC#object【发布时间】:2012-10-2117:06:25【问题描述】:我使用以下C#代码通过JSON.Net框架将JSON数据字符串转换为动态对象://Createsadynamic.NetobjectrepresentingtheJSONdatavarProductDB=Json... 查看详情
Pandas DataReader 无法将 % 识别为字符串的一部分
】PandasDataReader无法将%识别为字符串的一部分【英文标题】:PandasDataReaderdoesnotrecognise%aspartofthestring【发布时间】:2017-06-2221:24:27【问题描述】:以下代码尝试从googleFinance调用DAX历史索引,但是当函数实际调用“INDEXDB%3ADAX”时,... 查看详情
如何将 C++ 结构转换为 C# 结构
】如何将C++结构转换为C#结构【英文标题】:HowtoConvertaC++StructureintoC#Structure【发布时间】:2009-11-1604:07:24【问题描述】:我需要将一个复杂的C++结构转换为C#结构,我已经在C#中转换了其他结构,这个包含一些二维数组,问题是... 查看详情