我有一个数据表mytable,里面包含20个字段,装了三百条记录。在用VC编程的时候,应该用什么方法最快地创建一个表yourtable,它的内容与表mytable相同。请教!谢谢!

解决方案 »

  1.   

    可以用Sql语句生成,Sqlsever里面有存储过程来实现
      

  2.   

    select ... into
    SELECT...INTO 语句
    创建制表检索.语法
    SELECT field1[, field2[, ...]]INTO新表[IN外部数据库]
        FROM源SELECT...INTO 语句可分为以下几个部分:部分 说明 
    field1, field2 欲复制至新表的字段的名称。 
    NewTable 欲创建的表的名称。它应遵循标准命名公约.如果 NewTable 的名称与现存表的名称相同时,将会发生可以捕捉到的错误。 
    Externaldatabase 进入外部数据库的路径。有关路径的描述,请参阅 IN 子句。 
    source 从其中选择记录的现存表的名称。它可以是单一表或多重表或一个查询。 
    说明
    可以使用生成表查询来存档记录、生成表的复制备份、或生成输出至另一个数据库的表的副本、或用作定期显示数据的报表的依据。例如,可以每月运行一次同样的生成表查询,生成地区的销售月报。
      

  3.   

    先检查是否前面已创建过这个yourtable了:(这里假设表的所有者为dbo)
    if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[yourtable]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
    drop table [dbo].[yourtable]然后再复制同样格式及内容的表,并改名为yourtable:
    select * into into dbo.yourtable from mytable这两个sql语句即可完成。
      

  4.   

    复制表
    (只复制结构,源表名:a 新表名:b)
    SQL: select * into b from a where 1<>1说明:拷贝表(拷贝数据,源表名:a 目标表名:b)
    insert into b(a, b, c) select d,e,f from a;
      

  5.   

    后面那句多写了一个into,修正如下:
    select * into  dbo.yourtable from mytable另外说明一下,上面的第一句是判断数据库中是否已存在一个名叫yourtable的表,如果存在(例如你前面执行了一次select * into dbo.yourtable from mytable),如果存在是要先删除的,否则执行第二句将失败,因为新建表不能覆盖已存在的表。这样就必须先将它删除,然后才能重新新建。
    还有以下二种方法也可以实现你想要的复制表数据目的:
    第一种:将上面的第一句,先判断再删除改为不判断,不管数据库有无此表均执行删除:drop table [dbo].[yourtable],但是不作错误检测,因为第一次新建时是不存在这个yourtable表的,如果执行删除,肯定要失败,所以我们可以不管它的执行结果,反正如果存在就会被删除,当然你也可以一开始使用时就先手动创建一个叫yourtable的表,这样第一次执行删除时也不会出错了。
    然后select * into  dbo.yourtable from mytable就OK了。第二种,在系统开始使用前用select * into  dbo.yourtable from mytable 创建一个叫yourtable的与mytable相同结构的表,里面有无数据无所谓。然后在软件里采用插入数据的方法实现:
    先删除yourtable里的数据:
    delete * from yourtable 
    再全面插入mytable里面的数据:
    insert into yourtable select * from mytable 
    也OK...如果你的mytable表里的数据每次都是新增的而不存在更改,例如操作记录,那么这就表示以前插入过的数据是可以保留的没必要先删除,这样可以提高处理效率:
    insert into yourtable select * from mytable where ID not in(select ID from yourtable)(注:其中ID字段是你的mytable表的主键或唯一识别号,例如你是以userID为主键,则上面的ID,就改为userID)
    这样就可以只插入yourtable里没有记录了.在VC里的具体实现就不用说了吧?跟运行别的SQL命令一样的。祝成功。