私はMSFT Sql Server、Oracle、Sybaseをバックエンドとして使用する大規模なアプリケーションのユニット/自動テストを行っています。多分、dbとのインタフェースをとるためのより良い方法がありますが、ODBCライブラリは私が使用する必要があります。これらの制約を踏まえて、私が把握しなければならないことがあります。私はあなたの助けが大好きです。私のテストではデータベースの状態が変わってしまいました。私が完了した後は安価で99.99%の堅牢な方法で復元しています。ですから、私はこの関数を補完することを求めます。データセットからテーブルを作成する方法が必要です。C#を使用してデータベーステーブルにODBC DataSetオブジェクトを書き込む方法は?
private DataSet ReadFromTable(ODBCConnection connection, string tableName)
{
string selectQueryString = String.Format("select * from {0};", tableName);
DataSet dataSet = new DataSet();
using (OdbcCommand command = new OdbcCommand(selectQueryString, connection))
using (OdbcDataAdapter odbcAdapter = new OdbcDataAdapter(command))
{
odbcAdapter.Fill(dataSet);
}
return dataSet;
}
// The method that I seek.
private void WriteToTable(ODBCConnection connection, string tableName, DataSet data)
{
...
}
トリガーがあること、一部のテーブルが他のものに依存していることなど、私は事がより複雑になることを認識しています。しかし、テスト中のアプリケーションの効率性のために、ほとんど制約を使用しません。私はあなたにこの情報を提供しているので、おそらくあなたは物事をより良く/異なって行う方法についての提案を持っています。私は彼らがうまくいく限り、さまざまなアプローチに開放されています。
MsTest
ライブラリ、VS2010
、C#
、ODBCライブラリ、すべての3つのベンダーのサポート。
おそらくありがとうございます。 ODBC APIが私の必要とするものを完全に持つ可能性があります。私は100%のものがどこに来るのか確信していません。それはおそらく物事を永続させる方法でしょうか?下の行を変更する場合、データセットオブジェクトはどうなりますか?おそらく私はただクローンすることができたでしょうか?多分あなたはマージの目的のためにこれを行いました。それは素晴らしいですが、私が必要とするのは、テストまたはテストスイートが終了した後のdbの状態をリセットすることだけです。しかし、私はまた、2つのテーブル(テスト比較ロジック用)の違いを計算できるようにしたいと考えています。うまくいけば、これは理にかなっている。お気軽に質問してください。 –
XMLの内容は確かに持続しています。レコードをdbに戻したいので、クローンは機能しません。クローンを作成すると、データセットの行はすべて変更されていないので、Updateを呼び出すと何も変わりません。変更されたものだけを復元したい場合は、dbから実際のデータセットをロードし、Mergeを呼び出すことができます。あなたが間違った結果に終わった場合は、行ごとに比較することによってより微妙なマージを書いて、欠けているものを追加し、余分なものを削除し、違うものを更新する必要があります。元に戻すことはできませんが、無料ではありません... – rene
ありがとう、ちょっと遊びましょう... –