1

SQL Server 2008 データベースに接続しています。

C# を使用して、指定した名前で新しいテーブルを作成したいと思います。これは、そのデータベース内の既存のテーブルとまったく同じように見えます。関連する外部キーはありません。

私は次のようなコードを持っています

DataTable table = con.GetSchema("Tables");
foreach (System.Data.DataRow row in table.Rows)
{
    foreach (System.Data.DataColumn col in table.Columns)

しかし、それは私を遠くに連れて行きません。すべてのテーブルを自分で反復処理する必要がありますか? 特定できたとしても、DataTableクローンを作成するにはどうすればよいですか? 見ましDataTable.Cloneたが、新しい名前を設定してデータベースにそのテーブルを作成する方法がわかりません。

4

1 に答える 1

1

SMO ( Server Management Objects ) には、多くのテーブル スクリプト作成機能があります。私はそこから始めます。

この記事は、開始するのに役立つ場合があります。

SMO を回避したい場合は、次のように SQLDataReader を介して行うことができます (またはこれに近いもの)。

using (SqlConnection cnn = new SqlConnection(connectionString))
{
    using (SqlCommand cmd = cnn.CreateCommand())
    {
       cmd.CommandText = "Execute some SQL Select here. Doesn't matter what. We just need a reference to the table.";
       cmd.CommandType = CommandType.Text;
       cnn.Open();
       using (SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.KeyInfo))
       {
          schema = rdr.GetSchemaTable();
       }
    cnn.Close();
    }
}
于 2012-10-22T16:09:51.163 に答える