我是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#上构建一个应用程序。
答案 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传递到数据库而不至少检查它或使用参数,因为它可能是一个主要的安全风险,特别是如果你允许用户生成查询而你没有先审查它。