【发布时间】:2016-07-28 23:13:18
【问题描述】:
我的 C# 项目中有这个功能
public DataTable access2dt()
{
string myConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=test.accdb";
using (var con = new OleDbConnection(myConnectionString))
{
con.Open();
using (var cmd = new OleDbCommand("EXEC OUTBOUND_FILTER",con))
{
cmd.Parameters.AddWithValue("prmORIGINCODE", "BDO");
cmd.Parameters.AddWithValue("prmORIGIN", "\"*\"");
cmd.Parameters.AddWithValue("prmSERVICECODE", "REG15");
cmd.Parameters.AddWithValue("prmDESTCODE", "AMI");
cmd.Parameters.AddWithValue("prmDESTINATION", "\"*\"");
using (OleDbDataReader rdr = cmd.ExecuteReader())
{
DataTable myTable = new DataTable();
myTable.Load(rdr);
return myTable;
}
}
}
}
上面的函数是用于在 Ms Access 中使用一些参数执行查询对象,该代码只适用于我的项目,但我对“代码样式”有问题。
我想更改代码,因此当我有另一个带有另一个不同参数的查询时,我不需要重写该代码(请参阅参数、查询名称和 db 文件名是“硬编码”以发挥作用)。
任何建议和 C# 代码都会有所帮助。
【问题讨论】:
-
所以你希望这段代码能够执行任何查询,带有任意数量的参数?然后添加
string query, Dictionary<string, string> queryParameters之类的参数,或者更好的是List<SqlParameter>,或者为什么不让调用者自己发出OleDbCommand? -
@Matias 仅仅因为问题提到“代码风格”并不意味着它属于代码审查。
-
我认为这个问题不适合 Code Review,因为 OP 专门提出了一个问题:“我希望能够在我的代码中动态更改 X,我该怎么做那?”。他/她不是在问“这是我的代码,你有什么我可以改进的地方吗?”
-
是的,我可以使用变量并将其传递给函数,但是查询参数呢?参数不止一个,然后参数名称和参数值是我认为的两个不同的值/变量。
-
是的,因此您希望此方法的调用者使用任意数量的参数执行任意查询。然后让调用者自己实例化并执行
OleDbCommand,并将连接字符串粘贴到配置中。
标签: c#