从数据库中获取数据并创建关联数组/对象
本文关键字:关联 数组 对象 创建 数据库 获取 数据 | 更新日期: 2023-09-27 18:02:50
我是c#新手,已经使用PHP多年了。
我面临的问题是,我想创建一个方法/函数,将采取一个"sql查询"作为参数,并返回任何数据检索,以便它可以使用键/索引/column_name。
我的成就
我所实现的是,我能够通过索引访问同一函数内的数据。但我不知道答案。返回的列数,因此我无法将其存储在数组中。
代码 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. 我无法访问索引或列名。
我想创建一个关联数组的数据与列名作为索引和数据作为它的数据
编辑
我正在尝试使用WPF与MySQL数据库构建c#应用程序。
我的第一个建议是使用像Dapper.net这样的微orm之一
可以通过nuget获取。如果希望从一个表或多个表中检索未知的数据数组,可以将其获取到ExpandoObject中,然后对其进行枚举。在这里可以找到一个在ExpandoObject上循环的例子。
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传递到DB而不至少检查它或使用参数,因为这可能是一个主要的安全风险,特别是如果你允许用户生成查询,而你不首先检查它。