基于StackOverflow站点周围的链接(下面的参考资料),我提出了这个代码块来执行从我的C#应用程序到MySQL数据库的查询.
using (var dbConn = new MySqlConnection(config.DatabaseConnection))
{
using (var cmd = dbConn.CreateCommand())
{
dbConn.Open();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "SELECT version() as Version";
using (IDataReader reader = cmd.ExecuteReader())
{
if (reader.Read())
{
Console.WriteLine("Database Version: " + reader.GetString(reader.GetOrdinal("Version")));
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是,每次我要进行一组查询时,我必须构建这个庞大的代码块,因为我不会(也不应该)在应用程序的生命周期中保持连接打开.
是否有更有效的方法来构建支持结构(嵌套usings,打开连接等),而是传递我的连接字符串和我想要运行的查询并获得结果?
参考问题:
这是我看过的三个.还有一些,但我的Google-fu现在无法重新启动它们.所有这些都为如何执行单个查询提供了答案.我想执行单独的业务逻辑查询 - 其中一些重复 - 并且不想重复不需要的代码.
我尝试过:基于nawfal的评论,我有以下两种方法:
private MySqlDataReader RunSqlQuery(string query)
{
Dictionary<string, string> queryParms = new Dictionary<string, string>();
MySqlDataReader QueryResult = RunSqlQuery(query, queryParms);
return QueryResult;
}
private MySqlDataReader …Run Code Online (Sandbox Code Playgroud)