sqlite3中如何判断某个列是否存在
sqlite3中怎么判断某个列是否存在
因为表已经有了,后来升级需要新增一些列
采用了语句:ALTER TABLE Data ADD COLUMN test
但是重复的新增会报错,怎么在新增前先检查这个列是否存在呢?
这里不考虑使用异常的办法
------解决方案--------------------
希望对你有帮助,
如果是Oracle数据库,用下面的SQL判断:
SELECT * FROM USER_TAB_COLUMNS
WHERE TABLE_NAME = 'MY_TABLE' AND COLUMN_NAME = 'ENABLED'
如果数据库是Access就用下面的函数:
------解决方案--------------------
打开表,应该能得到所有列的信息了。。。
因为表已经有了,后来升级需要新增一些列
采用了语句:ALTER TABLE Data ADD COLUMN test
但是重复的新增会报错,怎么在新增前先检查这个列是否存在呢?
这里不考虑使用异常的办法
------解决方案--------------------
希望对你有帮助,
如果是Oracle数据库,用下面的SQL判断:
SELECT * FROM USER_TAB_COLUMNS
WHERE TABLE_NAME = 'MY_TABLE' AND COLUMN_NAME = 'ENABLED'
如果数据库是Access就用下面的函数:
function FieldExists(AccessFullName: string;
ATable: string;
FieldName: string
): Boolean;
var
FieldList: TStringList;
AccessCont: TADOConnection;
i: Integer;
begin
Result := False;
AccessCont := TADOConnection.Create(nil);
FieldList := TStringList.Create;
try
AccessCont.CommandTimeout := 0;
AccessCont.Provider := 'Microsoft.Jet.OLEDB.4.0';
AccessCont.LoginPrompt := False;
AccessCont.ConnectionString :=
'Provider=Microsoft.Jet.OLEDB.4.0;Password="";'
+ 'Persist Security Info=True;Data Source=' + AccessFullName;
AccessCont.Open;
AccessCont.GetFieldNames(ATable, FieldList);
//Result := FieldList.IndexOfName(ATableFieldName) <> -1;
for i := 0 to FieldList.Count - 1 do
if FieldList[i] = FieldName then
begin
Result := True;
Break;
end;
AccessCont.Close;
finally
AccessCont.Free;
FieldList.Free;
end;
end;
------解决方案--------------------
打开表,应该能得到所有列的信息了。。。