高手问题:已知一个表结构,想要创建 一个和该表结构一样的表.请问应如和做呢?
已知一个表结构,想要创建 一个和该表结构一样的表.请问应如和做呢?
要求程序自动创键..比如我输入一个表名.程序自动创建一个和该表一样结构的表.
我不是高手,我不知道了.呵呵
问题点数:50、回复次数:11Top
1 楼brightheroes(在地狱中仰望天堂)回复于 2003-12-02 10:01:08 得分 3
第一步,根据输入的表名,得到表的结构信息
第二步,生成create table sql语句
第三步,执行
Top
2 楼gshope(北京.Net)回复于 2003-12-02 10:02:27 得分 2
select * into table2 from table1 where 这里是一个返回空记录集合的条件Top
3 楼brightheroes(在地狱中仰望天堂)回复于 2003-12-02 10:05:16 得分 8
ds.Tables[0].Columns.Count;
ds.Tables[0].Columns[i].AllowDBNull;
ds.Tables[0].Columns[i].AutoIncrement;
ds.Tables[0].Columns[i].ColumnName;
ds.Tables[0].Columns[i].DataType;
ds.Tables[0].Columns[i].DefaultValue;
之类的信息
Top
4 楼gabriel1(说自己的话,让别人走路去吧)回复于 2003-12-02 10:08:11 得分 8
基本思路如下,
1、读出所有表
2、逐个读取所有表结构,如楼上
3、create table语句写表。Top
5 楼cuike519(I will be back!)回复于 2003-12-02 10:12:30 得分 5
直接科隆(Clone)!Top
6 楼cuike519(I will be back!)回复于 2003-12-02 10:16:37 得分 5
Clone: 受 .NET Framework 精简版的支持。 克隆 DataTable 的结构,包括所有 DataTable 架构和约束。
Copy: 复制该 DataTable 的结构和数据
Top
7 楼eyestrong(有时爱情图有虚名)回复于 2003-12-02 10:18:48 得分 5
DataTable cloneTable;
cloneTable = myDataTable.Clone();
Top
8 楼Edelweissobject(青山绿水)回复于 2003-12-02 10:23:46 得分 8
楼上的说的对,先返回一个已知表的空结构,再根据已知表的空结构的每一字段的信息,动态生成创建表的sql语句,如果是要转换很多表的话,可以专门写成一个函数。我以前做过从sql导出到Access就是这样做的。private string ReturnCreateTabelString(DataSet MyDs,string TableName)
{
string str="";
string DataType="";
str="Create Table "+TableName +"(";
if(MyDs!=null)
{
for(int i=1;i<MyDs.Tables[0].Columns.Count;i++)
{
DataType=Convert.ToString(MyDs.Tables[0].Columns[i].DataType);
if((DataType=="System.Int32")||(DataType=="System.Decimal")||(DataType=="System.Byte")||(DataType=="System.Double")||(DataType=="System.Int16"))
str=str+MyDs.Tables[0].Columns[i].ColumnName+" "+"Double"+",";
if(DataType=="System.String")
str=str+MyDs.Tables[0].Columns[i].ColumnName+" "+"String"+",";
if(DataType=="System.DateTime")
str=str+MyDs.Tables[0].Columns[i].ColumnName+" "+"DateTime"+",";
if(i==MyDs.Tables[0].Columns.Count-1)
str=str.Remove(str.Length-1,1)+")";
}
return str;
}
else
return str="";
}
}
}Top
9 楼eyestrong(有时爱情图有虚名)回复于 2003-12-02 10:31:05 得分 4
如果只是输入表名的话可以这样做。
首先从sqlserver的数据库中找到这个表(通过查询系统表的方法)。
select name from sysobjects where xtype='U' and name='[tablename]'
然后查找这个表的任意数据fill入数据集并克隆:
select top 1 * from [talblename];
....
//克隆(在上面有)
.....
//这样就可以取得这个表的所有结构和约束了。
//将新表加入数据集并更新数据库
.....
//完成。
Top
10 楼Wuzhou98(还在学习...)回复于 2003-12-02 10:52:35 得分 2
select * into table2 from table1 where falseTop
11 楼aqqwbjgvkgsmq(欧阳如风)回复于 2003-12-04 12:32:56 得分 0
分给的确不算合理,但就这么多了,要是不满宜给我发短消息,没关系,接着给.
Top




