delphi中使用sql2000数据库,如何增加一个表和在现有表中增加字段 ( 积分: 50 )

F

fscdc1

Unregistered / Unconfirmed
GUEST, unregistred user!
delphi中使用sql2000数据库,如何增加一个表和在现有表中增加字段,要先判断有没有这个表,没有就增加,有没有这个字段,没有就增加,请给出代码
 
if&nbsp;exists&nbsp;(select&nbsp;*&nbsp;from&nbsp;dbo.sysobjects&nbsp;where&nbsp;id&nbsp;=&nbsp;object_id(N'[dbo].[MyTable]')&nbsp;and&nbsp;OBJECTPROPERTY(id,&nbsp;N'IsUserTable')&nbsp;=&nbsp;1)<br>begin<br>&nbsp;&nbsp;alter&nbsp;table&nbsp;[dbo].[MyTable]&nbsp;add&nbsp;&quot;Name&quot;&nbsp;[varchar]&nbsp;(30)&nbsp;NULL<br>end<br>else<br>begin<br>&nbsp;&nbsp;CREATE&nbsp;TABLE&nbsp;[dbo].[MyTable]&nbsp;(<br>&nbsp;&nbsp;&nbsp;&nbsp;[ID]&nbsp;[int]&nbsp;NOT&nbsp;NULL,<br>&nbsp;&nbsp;&nbsp;&nbsp;[Name]&nbsp;[varchar]&nbsp;(30)&nbsp;NULL<br>&nbsp;&nbsp;)<br>end
 
楼上以给出代码
 
二楼标准写法
 
如果新建的数据库是名是syjxc,表名是show1,域名是n_code,n_code&nbsp;varchar&nbsp;3,不用except能给出具体的例子把
 
creation-zy大侠已写,<br>我再补充点:<br>也可以这么写<br>if&nbsp;exists(select&nbsp;*&nbsp;from&nbsp;dbo.sysobjects&nbsp;where&nbsp;name&nbsp;=&nbsp;'TableName'&nbsp;and&nbsp;&nbsp;type&nbsp;=&nbsp;'u')<br>如果这个表实临时表的话,那就变了:<br>create&nbsp;table&nbsp;#abc<br>(id&nbsp;int<br>)&nbsp;<br>select&nbsp;*&nbsp;from&nbsp;tempdb.dbo.sysobjects&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;where&nbsp;id&nbsp;=&nbsp;object_id('tempdb.dbo.#abc')
 
如果新建的数据库是名是syjxc,表名是show1,域名是n_code,n_code&nbsp;varchar&nbsp;3,不用except能给出具体的例子把
 
select&nbsp;*&nbsp;from&nbsp;dbo.sysobjects&nbsp;where&nbsp;id&nbsp;=&nbsp;object_id(N'[dbo].[MyTable]')&nbsp;and&nbsp;OBJECTPROPERTY(id,&nbsp;N'IsUserTable')&nbsp;=&nbsp;1中,sysobjects是什么,id&nbsp;=&nbsp;object_id是什么,<br>OBJECTPROPERTY(id,&nbsp;N'IsUserTable')是什么
 
.........<br>sysobjects是系统表,object_id,OBJECTPROPERTY都是sql&nbsp;server的系统函数啊,<br>就像select&nbsp;count(*)整的count一样
 
如果表已经存在,我想增加字段,请给出代码,这种情况最常见,还有数据库升级一般是怎么做的
 
alter&nbsp;table&nbsp;MyTable&nbsp;add&nbsp;&quot;Name&quot;&nbsp;varchar&nbsp;(30)&nbsp;NULL<br>这不就是增加字段吗。
 
delphi中的相应操作就是在adoquery中执行上述增加表或字段的sql代码
 
alter&nbsp;table&nbsp;MyTable&nbsp;add&nbsp;&quot;Name&quot;&nbsp;varchar&nbsp;(30)&nbsp;NULL<br>这不就是增加字段吗。如果该字段已经存在的话,会出错,<br>我想先判断是否有这个字段,没有就增加,请给出代码
 
老大,有问题能不能一气儿说完啊?<br><br>/*&nbsp;检查用户表&nbsp;MyTable&nbsp;是否存在&nbsp;*/<br>if&nbsp;exists&nbsp;(select&nbsp;*&nbsp;from&nbsp;dbo.sysobjects&nbsp;where&nbsp;id&nbsp;=&nbsp;object_id(N'MyTable')<br>&nbsp;&nbsp;and&nbsp;OBJECTPROPERTY(id,&nbsp;N'IsUserTable')&nbsp;=&nbsp;1)<br>begin<br>&nbsp;&nbsp;/*&nbsp;检查MyTable表中是否已有&quot;Name&quot;字段&nbsp;*/<br>&nbsp;&nbsp;IF&nbsp;Not&nbsp;Exists(<br>&nbsp;&nbsp;&nbsp;&nbsp;SELECT&nbsp;*&nbsp;FROM&nbsp;syscolumns&nbsp;WHERE&nbsp;(id&nbsp;=&nbsp;OBJECT_ID(N'MyTable'))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AND&nbsp;(OBJECTPROPERTY(id,&nbsp;N'IsUserTable')&nbsp;=&nbsp;1)&nbsp;AND&nbsp;(name&nbsp;=&nbsp;'Name')&nbsp;)<br>&nbsp;&nbsp;BEGIN<br>&nbsp;&nbsp;&nbsp;&nbsp;/*&nbsp;为MyTable表增加&quot;Name&quot;字段——类型为varchar,长度为30,可为空&nbsp;*/<br>&nbsp;&nbsp;&nbsp;&nbsp;alter&nbsp;table&nbsp;MyTable&nbsp;add&nbsp;&quot;Name&quot;&nbsp;[varchar]&nbsp;(30)&nbsp;NULL<br>&nbsp;&nbsp;END<br>end<br>else<br>begin<br>&nbsp;&nbsp;/*&nbsp;创建具有ID以及Name字段的MyTable表&nbsp;*/<br>&nbsp;&nbsp;CREATE&nbsp;TABLE&nbsp;[dbo].[MyTable]&nbsp;(<br>&nbsp;&nbsp;&nbsp;&nbsp;[ID]&nbsp;[int]&nbsp;NOT&nbsp;NULL,<br>&nbsp;&nbsp;&nbsp;&nbsp;[Name]&nbsp;[varchar]&nbsp;(30)&nbsp;NULL<br>&nbsp;&nbsp;)<br>end
 
顶部