-1

SELECTを使用してSQLデータベースから行を取得できるようにするメソッドを設計しようとしています。次に、返された行を、別のサーバーにあるデータベースの同じテーブルに挿入します。

サーバー接続とSELECTステートメントの両方が機能します。コピーしたい行をコンソールウィンドウで表示できます。

私が抱えている問題は、C#で使用する必要のあるデータ構造、このデータ構造にSELECTを入力する方法、そして最後にそのデータ構造を使用して行を挿入する方法を理解することです。

複数の行のオプションを開いたままにしておきたいのですが、今のところ、単一の行を転送できるとしたら、それは素晴らしいことです。

ありがとうございました。

編集:私はたくさんの研究の後でこれを自分で解決することができました。以下のコードをヒープに含めました。これは他の人に役立ちますが、機能しますが、理想からはほど遠いものです。私はアマチュアですが、まだ完成していません。

static public void CopyDatabaseRows(string ConnectionStringDEV, string ConnectionStringLOCAL, string queryString)
{
    //Connect to first database table to retreive row/rows and populate dataset + datatable.
    DataSet dataSet = new DataSet();
    SqlConnection conn = new SqlConnection(ConnectionStringDEV);
    conn.Open();

    SqlCommand command = new SqlCommand(queryString, conn);
    DataTable dataTable = new DataTable();
    SqlDataAdapter dataAdapter = new SqlDataAdapter(queryString, conn);

    dataAdapter.FillSchema(dataSet, SchemaType.Mapped);
    dataAdapter.Fill(dataSet, "dbo.FileRegister");
    dataTable = dataSet.Tables["dbo.FileRegister"];
    conn.Close();

    //Connect to second Database and Insert row/rows.
    SqlConnection conn2 = new SqlConnection(ConnectionStringLOCAL);
    conn2.Open();

    SqlBulkCopy bulkCopy = new SqlBulkCopy(conn2);
    bulkCopy.DestinationTableName = "dbo.FileRegister";
    bulkCopy.WriteToServer(dataTable);
}
4

2 に答える 2

4

Simple.Data ( https://github.com/markrendle/Simple.Data ) のようなものを使用して、これを非常に簡単に行うことをお勧めします。C# ダイナミクスを使用するため、動的型をロードして、型変換を気にせずに 2 番目の Simple.Data 接続に直接挿入できます。

何かのようなもの:

var db = Database.OpenConnection("data source=.;initial catalog=Xyz;etc");

var db2 = Database.OpenConnection("data source=somewhereElse;initial catalog=Xyz;etc");

dynamic user = db.Users.FindById(1);

db2.Users.Insert(user);
于 2012-11-20T13:39:05.997 に答える