在SQL中判断一个表是否存在
2008-11-25 19:51
274 查看
在SQL中判断一个表是否存在
<%sql="if exists (select * from sysobjects where id =
object_id(N'[dbo].[phone]') and OBJECTPROPERTY(id, N'IsUserTable') =
1) drop table [dbo].[phone]"
con.execute(sql)
%>
如果表phone存在则删除phone表
其中phone是表名,con是connection对像
两个假设:
1、已知数据库中所有的表默认的 Owner,如dbo(可以省略而取默认值)
2、已知当前用户有权限访问 systemobjects 系统表
SQL 语句:
select * from sysobjects where id =
object_id(N'[dbo].[table_name]')
and OBJECTPROPERTY(id, N'IsUserTable') = 1
'注:table_name 为实际要检查的表名
解释:
如果返回记录数为0则表明没有这个表,否则表示已经存在。
systemobjects 表中保存着数据库的所有表、视图和存贮过程等的信
息,检索这个系统表即可得到是否存在。此方法还适用于检查视图和存
贮过程,相应的标志要改为IsView(视图/查询)或者IsProcedure(
存贮过程),table_name 处为 view_name 或 procedure_name。
评价:
这种方法较检查错误代码确定表是否存在的方法相对较麻烦一些,但功
能更强大,不仅可以检查表还可以检查视图/查询、存贮过程等,用途比
较广泛。后者简便易行,不需要任何先觉条件,但应用范围比较有限。
个人认为,如果力求规范的编程,推荐使用第一种也就是搜索系统表的
方法判断对象(表、视图等)是否存在。
?如果是仅仅判断表名是否存在的,我觉得用下面的方法更简单(错误侦测法). On Error Resume Next ERR.CLEAR STRSQL="SELECT * FROM " & 你判断的表名 P_Cnn.Execute StrSql IF ERR.NUMBER=0 THEN '存在 ELSE '不存在. END IF
Referrence:Microsoft ADO Ext 2.x For DLL and Security '判断一个表(Table)是否在数据库中存在,若存在返回True;否则返回False。
Public Function ExistTable(TName As String, YHcnn As ADODB.Connection) As Boolean Dim cat As New ADOX.Catalog Dim tbl As ADOX.Table Dim Ret As Boolean Ret = False Set cat.ActiveConnection = YHcnn For Each tbl In cat.Tables If tbl.Type = "TABLE" And tbl.Name = TName Then Ret = True Exit For End If Next tbl Set cat = Nothing ExistTable = Ret End Function
<%sql="if exists (select * from sysobjects where id =
object_id(N'[dbo].[phone]') and OBJECTPROPERTY(id, N'IsUserTable') =
1) drop table [dbo].[phone]"
con.execute(sql)
%>
如果表phone存在则删除phone表
其中phone是表名,con是connection对像
两个假设:
1、已知数据库中所有的表默认的 Owner,如dbo(可以省略而取默认值)
2、已知当前用户有权限访问 systemobjects 系统表
SQL 语句:
select * from sysobjects where id =
object_id(N'[dbo].[table_name]')
and OBJECTPROPERTY(id, N'IsUserTable') = 1
'注:table_name 为实际要检查的表名
解释:
如果返回记录数为0则表明没有这个表,否则表示已经存在。
systemobjects 表中保存着数据库的所有表、视图和存贮过程等的信
息,检索这个系统表即可得到是否存在。此方法还适用于检查视图和存
贮过程,相应的标志要改为IsView(视图/查询)或者IsProcedure(
存贮过程),table_name 处为 view_name 或 procedure_name。
评价:
这种方法较检查错误代码确定表是否存在的方法相对较麻烦一些,但功
能更强大,不仅可以检查表还可以检查视图/查询、存贮过程等,用途比
较广泛。后者简便易行,不需要任何先觉条件,但应用范围比较有限。
个人认为,如果力求规范的编程,推荐使用第一种也就是搜索系统表的
方法判断对象(表、视图等)是否存在。
?如果是仅仅判断表名是否存在的,我觉得用下面的方法更简单(错误侦测法). On Error Resume Next ERR.CLEAR STRSQL="SELECT * FROM " & 你判断的表名 P_Cnn.Execute StrSql IF ERR.NUMBER=0 THEN '存在 ELSE '不存在. END IF
Referrence:Microsoft ADO Ext 2.x For DLL and Security '判断一个表(Table)是否在数据库中存在,若存在返回True;否则返回False。
Public Function ExistTable(TName As String, YHcnn As ADODB.Connection) As Boolean Dim cat As New ADOX.Catalog Dim tbl As ADOX.Table Dim Ret As Boolean Ret = False Set cat.ActiveConnection = YHcnn For Each tbl In cat.Tables If tbl.Type = "TABLE" And tbl.Name = TName Then Ret = True Exit For End If Next tbl Set cat = Nothing ExistTable = Ret End Function
相关文章推荐
- sql语句判断一个表里是否存在某列
- mssql判断一个函数名是否存在脚本sql
- sql 如何判断一个表是否存在
- [SQL,Java]判断某一个已知表名的表是否在数据库中存在的方法
- Sql : 如何判断一个表中,是否存在一个ID,如果存在不处理,如果不存在
- sql 如何判断一个表是否存在
- 当获取相似数据时,使用不同方法调用不同sp,但是使用同一个方法去用IIDataReader或者SqlDataReader读取数据时需要判断column name是否存在。
- 用PL/SQL判断一个FTP服务器上的文件是否存在
- sql判断一个表是否存在 以及表中的字段是否存在
- 在SQL中判断一个表是否存在
- 【转载】sql 如何判断一个表是否存在
- Sql : 如何判断一个表中,是否存在一个ID,如果存在不处理,如果不存在
- 模板(网络流判断:是否存在一个一直行列和的矩阵)
- jquery判断一个文件是否存在函数写法的历程
- SQL语句判断数据库、表、字段是否存在
- jquery和js如何判断一个对象是否存在
- 判断一个类名或者元素是否存在的思路
- matlab 判断cell数组里是否存在一个字符串
- 判断一个key 是否在map中存在
- 判断表中是否存在记录的SQL语句