SQLテーブルの特定のデータをDataTableにプルダウンする必要があるプロジェクトでクラスを拡張しています。以前は、データはすべてSQLのproc内で計算され、変更されましたが、計算されたデータが代わりに新しいテーブルに渡されるように、これを修正しました。さて、私は、このデータをID値に基づいてデータベースから取り出す方法を書いています。SQLテーブルのデータをパラメータに基づいてDataTableにプル
このコードの多くは、別の開発者によって書かれたもので、私はあまり知らないタプルのものを持っていて、ちょっと混乱させます。論理的には、似たようなことをやったことがありますが、特定の行だけではなく、テーブル全体を取り除いただけです。
これは、方法での私の最初のパスである:
new FooClass(_repo, dtRevisedData, idValue).Execute();
:最後に、このようなクラスを呼び出す前に
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);
}
:
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;
}
は、その後、私はそうのようなクラスにそれを使用
idValue
はファイルを介して読み込まれ、新しいSQLテーブルにスローされます。
これを実行すると、何も戻ってこない。私のテーブルにはデータが入っているので、それは問題ではないことは分かっています。私はタプルをどのように使用しているかという問題があると感じています。私はそれを正しく設定しましたか?そうでなければ、私は間違って何をしていますか?
はReadSqlTableToDataTableに休憩を入れて、あなたのクエリをチェック - イムそれはあなたがそれはあなたが「+」演算子を使用する場合、 'STRING'と'一覧<タプル<文字列で取得できると期待し何 – BugFinder
をしてどのように考えるか読んdoesntの考え、 '' '' ''新しいSqlCommand(query + parameterValueMappings、conn); '? – Fabio
@Fabio私は渡すSQL文を完成させるために整数値であると考えています。私のSQLクエリが不完全であるため – N0xus