我现在正在做一个小例程,需要从oracle数据库随机选取若干个表,依据选择的表创建sql ce数据库,并将数据导入该库。现在遇到一个问题,被选择的表我事先并不知道,因此要在导入时动态创建这些表,请问采用什么办法根据DataSet在数据库中自动创建表?

解决方案 »

  1.   

    select * into 目标表名 from 源表名//首先循环在ds中获得所有源表名ds.Tables[index].TableName; 然后循环拼写sql 用Command.ExecuteNonQuery()执行
      

  2.   


    基本思路这样,可以参考一下:
    ArrayList al = new ArrayList();   //创建表要执行的SQL
                        foreach(DataTable dt in ds.Tables)   //循环数据表
                        {
                        //获取创建表的SQL
                        string sSql = "Create DataTable " + dt.TableName + " (";
                        foreach(DataColumn dc in dt.Columns)   //循环列
                        {
                             //获取创建表的SQL,具体自己再发挥
                            sSql = sSql  + dc.ColumnName + dc.DataType.ToString() + ","; 
                        }
                        sSql.Substring(0,sSql.Length -1) + ")";
                            al.Add(sSql);
                        }
      

  3.   

    基本思路这样,可以参考一下:
    ArrayList al = new ArrayList();   //创建表要执行的SQL
                        foreach(DataTable dt in ds.Tables)   //循环数据表
                        {
                        //获取创建表的SQL
                        string sSql = "Create DataTable " + dt.TableName + " (";
                        foreach(DataColumn dc in dt.Columns)   //循环列
                        {
                             //获取创建表的SQL,具体自己再发挥
                            sSql = sSql  + dc.ColumnName + dc.DataType.ToString() + ","; 
                        }
                        sSql.Substring(0,sSql.Length -1) + ")";
                            al.Add(sSql);
                        }
    ====================
    这个应该可行