如何在指定的位置插入列来修改数据库结构,如:表有10列,我希望在第5和第6列间
插入一个空列?

解决方案 »

  1.   

    表列没有顺序,你只要在 select 中指定顺序就可以。
      

  2.   

    zaodt(至尊宝宝),能否给我写出实现的SQL语句,我用的oracle数据库,谢谢!
      

  3.   

    我想使用m_pConnection->Execute(strSQL,NULL,adcmdText)这个语句,现在不知道在指定位置插入新字段的SQL
    应该怎么写?
      

  4.   

    据我所知, 在 Oracle 中插入新的字段目前是没有这样的 SQL 语句的.
    不过, 你可以把字段插入在最后, 然后在你的 strSQL 语句中把顺序排一下即可.比如原表 thetable 中字段为 theid, thepassword, 想插入字段 thename , 你想在数据集中把 thename 放在 theid 与 thepassword 之间, 则你的 strSQL 可以这么写 select theid, thename, thepassword from thetable
      

  5.   

    首先感谢sgnaw(李逍遥)的回复, 呵呵....但实际上数据库中的数据还是插入了最后.大侠兄,有没有什么简接的办法达到目的!
      

  6.   

    首先感谢sgnaw(李逍遥)的回复, 呵呵....但实际上数据库中的数据还是插入了最后.大侠兄,有没有什么间接的办法达到目的!
      

  7.   

    间接方法, 把想插入位置后面的一个字段里的数据 copy 到临时表中, 
    insert into tempTable (select aColumn, bColumn from srcTable);再把原表中的 aColumn, bColumn 列删除
    alter table srcTable
    drop column aColumn;
    alter table srcTable
    drop column aColumn;再添加新的列, 比如 newColumn varchar2(4), 并把原来的 aColumn, bColumn 加上
    alter table srcTable
    add (newColumn varchar2(4), aColumn char(2), bColumn char(2));再把 aColumn, bColumn 的值临时表还原到表 srcTable 中.
    把临时表 temptable 删除.
      

  8.   

    呵呵....是这样的:
       我把数据库中的数据显示在CListCtrl中,当用户右键点击CListCtrl控件栏时,弹出浮动菜单,
    点击添加列后,就可以将空列添加到CListCtrl中(如果用户点击了CListCtrl中的第五列),这时我必须更新数据库,在第五列前添加空列,zaodt(至尊宝宝)在做这事上有有没有更好的办法?
      

  9.   

    是要通过CListCtrl修改数据库表结构啊?!
    这个功能就是修改表结构???如果是,那么估计只好按照sgnaw(李逍遥) 的方法了……
    其实sql server的企业管理器也是这么做的……只是……这样做容易有问题,
    1是效率问题 2是容易引起引用了此表的对象非法问题。如触发器,视图,过程都可能要重编译……
      

  10.   

    warmhearted() ====================================================================你为什么一定要改变列在数据库中的位置?你为什么不可以再建一个表,用这个表来存储列的位置;当你要显示时,用这个顺序来显示你的数据!=====================================================================我认为,列在表里的位置你应该不用去管,因为它的位置跟你的程序可以无关。就象表中行的前后一样,跟我们没有什么关系。
      

  11.   

    其实,我也想过你说的办法,我当时想通过一个CList 或 CArray去保存这一对应关系。
    呵呵没想到在数据库中插入列有一定的难度,呵呵。感谢各位大虾指点,给分!