9

データセット テーブルのプロパティを手動で解析せずに (Vb.Net 2005 で)、テーブルを作成してデータベースに追加することは可能ですか?

一部のマシンには古いバージョンのプログラムがあり、明らかに古いデータベースがあり、欠落しているテーブルがあるかどうかを検出し、データセット内のテーブルの現在のステータスに基づいてテーブルを生成する方法を探しています。新しいバージョンをリリースするたびに (新しい列が追加された場合) テーブルのスクリプトを書き直していましたが、可能であればこの手順は避けたいと考えています。

4

2 に答える 2

7

この MSDN フォーラムの投稿: ADO.net DataTable から SQL Server に新しいテーブルを作成するを参照してください。

ここで、ポスターはあなたと同じことをしようとしているようで、DataTable に含まれるスキーマを使用して Create Table ステートメントを生成するコードを提供します。

これが正常に機能すると仮定すると、そのコードを取得してデータベースに送信しSqlCommand.ExecuteNonQuery()、テーブルを作成できます。

于 2008-08-19T20:09:46.937 に答える
2

コードは次のとおりです。

SqlConnection con = new SqlConnection("Data Source=.;uid=sa;pwd=sa123;database=Example1");
con.Open();
string sql = "Create Table abcd (";

foreach (DataColumn column in dt.Columns)
{
    sql += "[" + column.ColumnName + "] " + "nvarchar(50)" + ",";
}

sql = sql.TrimEnd(new char[] { ',' }) + ")";
SqlCommand cmd = new SqlCommand(sql, con);
SqlDataAdapter da = new SqlDataAdapter(cmd);
cmd.ExecuteNonQuery();

using (var adapter = new SqlDataAdapter("SELECT * FROM abcd", con)) 
using(var builder = new SqlCommandBuilder(adapter))
{
    adapter.InsertCommand = builder.GetInsertCommand();
    adapter.Update(dt);
}
con.Close();

問題が解決したことを願っています。
これがDataTabledtの名前です。
または、次のものを置き換えることができます。

adapter.update(dt);

//if you have a DataSet
adapter.Update(ds.Tables[0]); 
于 2012-11-29T11:56:01.927 に答える