2011-07-11 3 views
0

SQLを記述したり、サードパーティライブラリを使用して複数のADO.NET DataTableからデータベーススキーマを作成することなく、可能ですか?DataTableからデータベーススキーマを作成する

+0

最終的にはCREATE TABLEステートメントを実行する必要があります。もちろん、DataTableのメタデータを使用してプロセスをカプセル化するクラスを作成できます。 –

+0

私はどんなSQLも書いたくありません。 –

+0

どのようにしてテーブルを作成すると思いますか?基本的にあなたの質問は、「.NET Frameworkには、DataTableからSQLテーブルを自動的に作成する関数が付属していますか?答えはノーで、私が知る限りです。 –

答えて

0

SQLを簡単に書く関数を作成するのは簡単です。あなたはすべてのSQLを使用しないただし場合、私はあなたが運の尽きだと思うだろう:

private string GetSqlCommand(Dictionary<string, Type> schema, string tableName, bool includeIdentity) 
    { 
     string sql = "CREATE TABLE [" + tableName + "] (\n"; 

     if (includeIdentity) 
      sql += "[ID] int not null Identity(1,1) primary key,\n"; 

     foreach (KeyValuePair<string, Type> info in schema) 
     { 
      sql += "[" + info.Key + "] " + SQLGetType(info.Value) + ",\n"; 
     } 

     sql = sql.TrimEnd(new char[] { ',', '\n' }) + "\n"; 

     return sql + ")"; 
    } 
0

は私が事前に定義されたテーブル名のABCDを与えているコード

SqlConnection con = connection string; 
     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(); 
con.close(); 

です。

関連する問題