2011-07-11 120 views
0

是否可以在不编写任何SQL或使用任何第三方库从若干ADO.NET创建数据库模式DataTable s?从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

下面是代码

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(); 

我给一个预定义的表名ABCD。