delphi中查看表和字段是否存在的几种方法

delphi中查看表和字段是否存在的几种方法,第1张

select * from syscolumns where id in (select id from sysobjects where name = 'Test') and name = 'name' TADOConnection中有一个方法procedure GetFieldNames(const TableName: StringList: TStrings)输入表名,List就获得该表的所有字段,你可以这样来判断.function FieldExist(const TAbleName : stringconst FieldName : string) : booleanvar List : TStringListbegin List := TStringList.CreateADOConnection1.GetFieldNames(TableName,List)//如果大小写不敏感的话,可以在此设置 List.CaseSensitive := Falseif List.IndexOf(FieldName) >= 0 then result := true else result := falseList.Freeendfunction isfield(fieldname : string) : booleanvar i : integerbegin result := falsefor i := 0 to adoqry.Fields.Count -1 do if adoqry.Fields[i].fieldname = fieldname then begin result := trueexitendend首先用ADOCONNECTION连接上MASTER数据库后在设置连接属性为TRUE用ADS_PUB(DATASET)测试是否建立数据库以一是FUNCTIONfunction DBExists: Booleanbegin with ads_Pub do begin CloseCommandText := 'SELECT * FROM sysdatabases WHERE name = ''' + FDBName + ''''Openif isEmpty then Result := False else Result := Trueendendfunction CreateSQLServerDB: Boolean//建立数据库FUNCTION begin cmd_Pub.CommandText := 'Create database ' + FDBNametry cmd_Pub.ExecuteResult := Trueexcept Result := Falseendendif Exists (select * from (select sysobjects.name as 表名 ,syscolumns.name as 列名 from sysobjects,syscolumns where sysobjects.id =syscolumns.id) report_zycxj_tjwhere report_zycxj_tj.表名='report_zycxj_tj' and report_zycxj_tj.列名='发卡') print 'Have!'elsebegin print 'No Have!' alter table report_zycxj_tj add 发卡 float default 0.00endselect * from report_zycxj_tj1:用adoconnection连接上数据库 adoconnection.gettablenames(TStringList) if TStringList.indexof('表名')<-1then 表存在!if exists (select * from master..sysdatabases where name='your databasename' ) //判断数据库是否存在if exists (select * from sysobjects where name='your tablename' ) //判断表是否存在if exists (select object_name(id), * from sysobjects where name='your colename' and object_name(id)='your tablename ) //判断表的字段是否存在 if (select count(*) from syscolumns where name=字段)0 then return '存在'else return '没'if exists(select 字段 from tablename ) then ..... //====================================================//access: fieldexist and tableExist//====================================================field1 要创的的字段则先列举对应table1的所有字段再来判断,有则skip it没有则 add filed--------------------------------------------FieldList:=TStringList.Create //用来保存该表的所有字段 ADOConnection1.GetFieldNames('你的表名',FieldList)FName:='你要增加的字段'isFiledExist:=False//判断中否忆经存在 for i:=0 to FieldList.Count-1 do if FName=FieldList.Strings[i] then begin isFiledExist:=Truebreakendif not isFiledExist then with ADOQuery1 do begin str:='Alter Table 你的表名 Add 你要增加的字段名 MONEY Default 0 'closesql.Clear sql.Add(str)ExecSQLendFieldList.Free //==============================================================//adotable//==============================================================如何检测一个数据表的某个字段是否存在?

var

strSql: string

strSql := 'select * from table where 条件';

with ADOQuery1 do

begin

Close

SQL.Clear

SQL.Add(strSql)

Open

end

if ADOQuery1.IsEmpty then

begin

showmessage('数据库中未检索到该记录!')

end

else

begin

showmessage('数据库中已经存在该记录!')

end

【判断数据库是否存在】语法如下:

if exists (select * from sys.databases where name = '数据库名')

--drop database [数据库名]


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/6770650.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-03-28
下一篇2023-03-28

发表评论

登录后才能评论

评论列表(0条)

    保存