我正在擴展項目中的類,我需要將特定數據從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