MySQL和C#从数据库获取数据并创建关联数组/对象

时间:2015-07-15 08:17:20

标签: c# mysql arrays

我是C#的新手,并且多年来一直在使用PHP。

我面临的问题是我想创建一个方法/函数,它将“sql查询”作为参数并返回检索的任何数据,以便可以使用key / index / column_name来使用它。 p>

我取得的成就

我已经实现的是我能够通过同一功能中的索引访问数据。 但我不知道没有。将返回的列,因此我无法将其存储在数组中。

代码

        string ConnectionString = ConfigurationManager.ConnectionStrings["sqlcon"].ConnectionString;
        MySqlConnection db;
        db = new MySql.Data.MySqlClient.MySqlConnection(ConnectionString);
        try
        {
            db.Open();
            MySqlCommand cmd = new MySqlCommand();
            cmd.Connection = db;
            cmd.CommandText = sql;
            MySqlDataReader rdr = cmd.ExecuteReader();
            while (rdr.Read())
            {
                Console.WriteLine(rdr['areaId'].toString());
            }
            db.Close();
            return true;
        }

问题
1.我不知道列的数量 2.我无法访问索引或列名
我想创建一个关联的数据数组,列名作为索引,数据作为数据

修改
我正在尝试使用带有MySQL数据库的WPF在C#上构建一个应用程序。

1 个答案:

答案 0 :(得分:0)

我的第一个建议是使用其中一个微型ORM,如Dapper.net

这可以通过nuget获取。如果您希望从表或多个表中检索未知数据数组,可以将其提取到ExpandoObject中,然后对其进行枚举。循环遍历ExpandoObject的示例可以是found here

    public Foo FetchSomeData(string query)
    {
        using (var cn = Connection)
        {
            var result = cn.Query(query);
           //do something with result, and return it
           return new Foo(result);
        }
    }

我担心将原始sql传递到数据库而不至少检查它或使用参数,因为它可能是一个主要的安全风险,特别是如果你允许用户生成查询而你没有先审查它。