Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# .NET MySQL数据读取器选择功能?_C#_.net_Mysql_Select_Sqldatareader - Fatal编程技术网

C# .NET MySQL数据读取器选择功能?

C# .NET MySQL数据读取器选择功能?,c#,.net,mysql,select,sqldatareader,C#,.net,Mysql,Select,Sqldatareader,我已经很久没有使用.NET了,但谢天谢地,我几乎已经完成了一个比较sqlite和mysql数据库的工具的编写。不过,当我尝试为包装器编写一个函数来处理SELECT调用时,遇到了一个问题,因为我无法完全理解数据读取器 我的理解是,读卡器上循环的每次迭代都是下一行,GetString(x)返回“x”的列值作为索引。不过,我找到的所有示例都是在了解所需的行/列名的情况下使用的。如何使用“SELECT*FROM”调用并保存列名/值以供以后访问?微软似乎有一个“FieldCount”函数,但我在MySQL

我已经很久没有使用.NET了,但谢天谢地,我几乎已经完成了一个比较sqlite和mysql数据库的工具的编写。不过,当我尝试为包装器编写一个函数来处理SELECT调用时,遇到了一个问题,因为我无法完全理解数据读取器

我的理解是,读卡器上循环的每次迭代都是下一行,GetString(x)返回“x”的列值作为索引。不过,我找到的所有示例都是在了解所需的行/列名的情况下使用的。如何使用“SELECT*FROM”调用并保存列名/值以供以后访问?微软似乎有一个“FieldCount”函数,但我在MySQL连接器上的结果是空的

谢谢

public void Query(string query, string tableName)
{
    //Open connection
    if (this.OpenConnection() == true)
    {
        //Create Command
        MySqlCommand cmd = new MySqlCommand(query, connection);
        MySqlDataReader dataReader = cmd.ExecuteReader();

        //Read the data and store them in the list
        while (dataReader.Read())
        {
            int count = Count(tableName);

            for (int x = 0; x < count; x++)
            {
                Console.WriteLine(dataReader.GetString(count));
            }
        }

        //close Data Reader
        dataReader.Close();

        //close Connection
        this.CloseConnection();
    }
}
公共作废查询(字符串查询,字符串表名)
{
//开放连接
if(this.OpenConnection()==true)
{
//创建命令
MySqlCommand cmd=新的MySqlCommand(查询、连接);
MySqlDataReader=cmd.ExecuteReader();
//读取数据并将其存储在列表中
while(dataReader.Read())
{
int count=计数(表名);
对于(int x=0;x
根据列的顺序,您可以使用获取列的名称
x

使用“mysql连接器”访问mysql中的数据这比自己编写查询更简单:

然后使用EntityFramework通过此连接器访问数据。您还可以从mysql中现有的数据库自动生成*.edmx模型,这将使您能够快速访问和处理数据库中的数据。以下是有关从现有数据库添加*.edmx模型的信息:

将从表中选择所有数据的查询,例如“Products”,如下所示:

List products=dbContext.products.Where(e=>e.ProductId!=-1.ToList()

这将返回数据库中表products中的全部产品列表

然后你可以随心所欲地使用产品。例如,“产品”中第一个产品的“名称”列如下所示:

字符串firstProductName=产品[0]。名称


希望能有所帮助。

谢谢你的帮助。我想我的问题有点困惑。我想问的是,为了便于参考,存储这些数据的最佳方式是(列表/字典/2D数组/等等)?@BrettPowell:确切的数据是什么?列名?只是列名和每行的值。我基本上需要从sqlite中获取一个值,并检查它是否与mysql中特定列中的任何值匹配。@BrettPowell:我真的不知道,这取决于很多事情。一般来说,如果数据集很大,那么将所有数据拉入内存可能不是一个好主意。否则,您可以将它们放在例如
列表中
,因为有一个
GetValues
方法可以提供一个
object[]
。谢谢您,尽管这个项目现在已经差不多完成了,转换到这个项目似乎相当复杂。答案很好:)没问题。我还想告诉你一件事。当我开始使用C#和.NET时,我还亲手编写sql查询,并使用DataReader转换到.NET中的可用对象,但在一个伟大的日子里,我找到了自己的EntityFramework和Linq。现在我甚至不能指望我的生活没有这些技术。你应该试一下。不管怎样,我很高兴你喜欢我的答案。