如何在指定的位置插入列来修改数据库结构 如何在指定的位置插入列来修改数据库结构,如:表有10列,我希望在第5和第6列间插入一个空列? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 表列没有顺序,你只要在 select 中指定顺序就可以。 zaodt(至尊宝宝),能否给我写出实现的SQL语句,我用的oracle数据库,谢谢! 我想使用m_pConnection->Execute(strSQL,NULL,adcmdText)这个语句,现在不知道在指定位置插入新字段的SQL应该怎么写? 据我所知, 在 Oracle 中插入新的字段目前是没有这样的 SQL 语句的.不过, 你可以把字段插入在最后, 然后在你的 strSQL 语句中把顺序排一下即可.比如原表 thetable 中字段为 theid, thepassword, 想插入字段 thename , 你想在数据集中把 thename 放在 theid 与 thepassword 之间, 则你的 strSQL 可以这么写 select theid, thename, thepassword from thetable 首先感谢sgnaw(李逍遥)的回复, 呵呵....但实际上数据库中的数据还是插入了最后.大侠兄,有没有什么简接的办法达到目的! 首先感谢sgnaw(李逍遥)的回复, 呵呵....但实际上数据库中的数据还是插入了最后.大侠兄,有没有什么间接的办法达到目的! 间接方法, 把想插入位置后面的一个字段里的数据 copy 到临时表中, insert into tempTable (select aColumn, bColumn from srcTable);再把原表中的 aColumn, bColumn 列删除alter table srcTabledrop column aColumn;alter table srcTabledrop column aColumn;再添加新的列, 比如 newColumn varchar2(4), 并把原来的 aColumn, bColumn 加上alter table srcTableadd (newColumn varchar2(4), aColumn char(2), bColumn char(2));再把 aColumn, bColumn 的值临时表还原到表 srcTable 中.把临时表 temptable 删除. 呵呵....是这样的: 我把数据库中的数据显示在CListCtrl中,当用户右键点击CListCtrl控件栏时,弹出浮动菜单,点击添加列后,就可以将空列添加到CListCtrl中(如果用户点击了CListCtrl中的第五列),这时我必须更新数据库,在第五列前添加空列,zaodt(至尊宝宝)在做这事上有有没有更好的办法? 是要通过CListCtrl修改数据库表结构啊?!这个功能就是修改表结构???如果是,那么估计只好按照sgnaw(李逍遥) 的方法了……其实sql server的企业管理器也是这么做的……只是……这样做容易有问题,1是效率问题 2是容易引起引用了此表的对象非法问题。如触发器,视图,过程都可能要重编译…… warmhearted() ====================================================================你为什么一定要改变列在数据库中的位置?你为什么不可以再建一个表,用这个表来存储列的位置;当你要显示时,用这个顺序来显示你的数据!=====================================================================我认为,列在表里的位置你应该不用去管,因为它的位置跟你的程序可以无关。就象表中行的前后一样,跟我们没有什么关系。 其实,我也想过你说的办法,我当时想通过一个CList 或 CArray去保存这一对应关系。呵呵没想到在数据库中插入列有一定的难度,呵呵。感谢各位大虾指点,给分! 急问,为什么在使用vs2005 profiler时会出现"未能启动,运行时库的注入失败" mfc 贴图闪 VC HIDUSB通讯的问题 在线等 遍历位图中所有颜色,有没有好的方法? 很牛逼的问题 CListCtrl如何得知多个条目被选中,如何一个一个获得这些条目? 怎样读出文件中的数值型数据 那位高手请帮忙解决:VC里面如何做报表系统,做成C/S模式,用哪个ODBC与ADO更方便??? 调试下加载东西不出错,ctrl+F5之后再添加数据就崩溃 请问:那里能down 《com 原理及应用》电子版 怎样启动另一个可执行文件 谁来帮帮我...我实在是不行了...
应该怎么写?
不过, 你可以把字段插入在最后, 然后在你的 strSQL 语句中把顺序排一下即可.比如原表 thetable 中字段为 theid, thepassword, 想插入字段 thename , 你想在数据集中把 thename 放在 theid 与 thepassword 之间, 则你的 strSQL 可以这么写 select theid, thename, thepassword from thetable
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 删除.
我把数据库中的数据显示在CListCtrl中,当用户右键点击CListCtrl控件栏时,弹出浮动菜单,
点击添加列后,就可以将空列添加到CListCtrl中(如果用户点击了CListCtrl中的第五列),这时我必须更新数据库,在第五列前添加空列,zaodt(至尊宝宝)在做这事上有有没有更好的办法?
这个功能就是修改表结构???如果是,那么估计只好按照sgnaw(李逍遥) 的方法了……
其实sql server的企业管理器也是这么做的……只是……这样做容易有问题,
1是效率问题 2是容易引起引用了此表的对象非法问题。如触发器,视图,过程都可能要重编译……
呵呵没想到在数据库中插入列有一定的难度,呵呵。感谢各位大虾指点,给分!