5,530
社区成员
发帖
与我相关
我的任务
分享
#ifdef DATABASE_MYSQL
#define DB_QUERY mysql_query //mysql_query()函数
#elif defined DATABASE_SQLITE
#define DB_QUERY sqlite_query //sqlite_query()函数,与mysql_query()的参数列表是一致的
#endif
function getid(const s:string):integer;
var
genid:string;
systab:string;
begin
result:=0;
if uppercase(AppFactory.SystemSet.DataBaseType)='INTRBASE' then
//AppFactory是定义的类,SystemSet是AppFactory中的一个子类,DataBaseType是SystemSet中有关数据库的变量,字串型
begin
genid:='gen_id('+s+',1) '+s; //interbase调用gen_id
systab:='rdb$database';
end else
begin
genid:=s+'.NEXTVAL '+s; //oracle调用nextval
systab:='dual';
end;
try
With CurDatabase.IBSql do
begin
Sql.Text:=Format('Select %s from %s',[genid,systab]);
Open();
result:=FieldByName(s).AsInteger;
end;
except
on E: Exception do
TUtils.ShowMess(e.Message);
end;
end;
function TSystemSet.LoadFromFile(Const filename:String):Boolean;
var ss:TStringList;S:String;
begin
SS:=TStringlist.Create;
fillchar(Self,Sizeof(size),0);
S:=TUtils.AppRoot();
...
DataBaseName:='orcl'; //缺省的数据名
DataBaseType:='oracle'; //缺省的数据类型
...
if not FileExists(FileName) then
SaveToFile(FileName)
else
begin
s:=ss.Values['DatabaseName']; //得到ini中的数据名
if S<>'' then
DatabaseName:=S;
....
end;