我正在扩展项目中的类,我需要将特定数据从SQL表中拉出到DataTable中。之前,数据是在一个SQL过程中计算和修改的,但是我已经修改了这个,以便将计算的数据传递到一个新表中。现在,我正在编写一个方法,根据它的ID值将这些数据从数据库中提取出来。根据参数将数据从SQL表中提取到DataTable中
很多这种代码是由另一个开发人员编写的,他有一个元组的东西,我不知道太多,并且让我有点困惑。逻辑上来说,我做了类似的事情,但我只是拉下了一张桌子,而不是一个特定的行。
这是我的方法,第一遍:
public DataTable ReadSqlTableToDataTable(List<Tuple<string, string>> parameterValueMappings, DataTable dt)
{
string query = "SELECT * FROM dbo.Mytable WHERE IdValue= ";
using (var conn = new SqlConnection(_config.ConnectionString))
{
conn.Open();
SqlCommand cmd = new SqlCommand(query + parameterValueMappings, conn);
using (var da = new SqlDataAdapter(cmd))
{
da.SelectCommand.CommandTimeout = 600;
da.Fill(dt);
}
}
return dt;
}
然后,我用它的一类,像这样:
private readonly IDbRepository _repo;
private readonly DataTable _revisedDatabTable;
private List<Tuple<string, string>> _commandParameters;
private readonly int _batchId;
public FooClass(IDbRepository repository, DataTable revisedDatabTable, int batchId) //pass in structure
{
_repo = repository;
_revisedDatabTable = revisedDatabTable;
_batchId = batchId;
}
public void Execute()
{
_commandParameters = new List<Tuple<string, string>>
{
new Tuple<string, string>("@IDValue",_idValue.ToString())
};
_repo.ReadSqlTableToDataTable(_commandParameters, _revisedDatabTable);
}
之前最后调用类是这样的:
new FooClass(_repo, dtRevisedData, idValue).Execute();
idValue
通过文件读入并被引入到我的新SQL表中。
现在,当我运行这个时,我没有得到任何回报。我的桌子上有数据,所以我知道这不是问题。我有一个感觉,问题在于我如何使用元组。我是否正确设置了它?如果不是,我做错了什么?
把休息的ReadSqlTableToDataTable并检查您的查询 - IM想它不看你怎么想它 – BugFinder
你希望得到什么,当你用“+”操作符与'string'和'名单<组<字符串,stirng >>'在线'新的SqlCommand(query + parameterValueMappings,conn);'? – Fabio
@Fabio我期望它是一个整数值来完成我传入的SQL语句。由于我的SQL查询不完整 – N0xus