📄 mysqlcommon.pas
字号:
function TmySQLClientQuery.GetIndexByFieldName(const FieldString : string) : integer;
begin
Result:=-1;
if FCurrentTaskData.F_presults=nil then exit;
if not FFieldsLoaded then GetFields;
Result:=FFields.IndexOf(FieldString);
end;
function TmySQLClientQuery.DataByFieldName(const i : longint; const FieldString : string) : pchar;
var
j : integer;
begin
Result:='';
j:=GetIndexByFieldName(FieldString);
if j<0 then exit;
Result:=Data(i,j);
end;
//----------------------------------------------------------------------------
//----------------------------------------------------------------------------
destructor TmySQLClientModifyData.Destroy;
begin
StrDispose(pData);
inherited;
end;
constructor TmySQLClientModify.Create;
begin
inherited Create;
FTaskHandler:=nil;
FData :=TStringList.Create;
end;
destructor TmySQLClientModify.Destroy;
begin
Reset;
FData.Free;
inherited;
end;
procedure TmySQLClientModify.Reset;
var
i : integer;
D : TmySQLClientModifyData;
begin
for i:=0 to FData.Count-1 do begin
D:=TmySQLClientModifyData(FData.Objects[i]);
D.Free;
end;
FData.Clear;
end;
procedure TmySQLClientModify.Add(const Column : string; Data : pchar);
var
D : TmySQLClientModifyData;
begin
D:=TmySQLClientModifyData.Create;
D.pData:=StrAlloc(MAX_SQL_LENGTH);
StrCopy(D.pData,Data);
FData.AddObject(Column,D);
end;
procedure TmySQLClientModify.AddString(const Column : string; const Data : string);
var
D : TmySQLClientModifyData;
begin
D:=TmySQLClientModifyData.Create;
D.pData:=StrAlloc(Length(Data)+1);
StrPCopy(D.pData,Data);
FData.AddObject(Column,D);
end;
procedure TmySQLClientModify.AddInteger(const Column : string; const Data : integer);
var
D : TmySQLClientModifyData;
sTemp : string;
begin
sTemp:=IntToStr(Data);
D:=TmySQLClientModifyData.Create;
D.pData:=StrAlloc(Length(sTemp)+1);
StrPCopy(D.pData,sTemp);
FData.AddObject(Column,D);
end;
procedure TmySQLClientModify.AddMemo(const Column : string; Memo : TMemo);
var
iTemp : integer;
pTemp : pchar;
begin
iTemp:=StrLen(Memo.Lines.GetText);
if iTemp>0 then begin
pTemp:=StrAlloc(MAX_MEMO_LENGTH);
pTemp^:=#0;
Add(Column,Quote(pTemp,Memo.Lines.GetText,iTemp,[QUOTE_STRIP_CR]));
StrDispose(pTemp);
end
else
Add(Column,'NULL');
end;
procedure TmySQLClientModify.Combine(T : TmySQLClientTaskData);
var
pStrTemp : array[0..255] of char;
i : integer;
D : TmySQLClientModifyData;
begin
with T do begin
FillChar(F_query^,MAX_SQL_LENGTH,#0);
case F_modifytype of
MODIFY_CREATE_TABLE: begin
StrCopy(F_query,'CREATE TABLE ');
StrCat(F_query,StrPCopy(pStrTemp,F_table+' ('));
for i:=0 to FData.Count-1 do begin
D:=TmySQLClientModifyData(FData.Objects[i]);
StrCat(F_query,StrPCopy(pStrTemp,FData.Strings[i]+' '));
StrCat(F_query,D.pData);
if i<>FData.Count-1 then
StrCat(F_query,',');
end;
StrCat(F_query,')');
end;
MODIFY_DROP_TABLE: begin
StrPCopy(F_query,'DROP TABLE '+F_table);
end;
MODIFY_INSERT, MODIFY_REPLACE_INTO: begin
if F_modifytype = MODIFY_UPDATE then
StrCopy(F_query,'INSERT INTO ')
else
StrCopy(F_query,'REPLACE INTO ');
StrCat(F_query,StrPCopy(pStrTemp,F_table+' ('));
for i:=0 to FData.Count-1 do begin
StrCat(F_query,StrPCopy(pStrTemp,FData.Strings[i]));
if i<>FData.Count-1 then
StrCat(F_query,',');
end;
StrCat(F_query,') VALUES (');
for i:=0 to FData.Count-1 do begin
D:=TmySQLClientModifyData(FData.Objects[i]);
StrCat(F_query,D.pData);
if i<>FData.Count-1 then
StrCat(F_query,',');
end;
StrCat(F_query,')');
if F_condition<>nil then begin
StrCat(F_query,' ');
StrCat(F_query,F_condition);
end;
end;
MODIFY_UPDATE: begin
StrCopy(F_query,'UPDATE ');
StrCat(F_query,StrPCopy(pStrTemp,F_table+' SET '));
for i:=0 to FData.Count-1 do begin
D:=TmySQLClientModifyData(FData.Objects[i]);
StrCat(F_query,StrPCopy(pStrTemp,FData.Strings[i]+'='));
StrCat(F_query,D.pData);
if i<>FData.Count-1 then
StrCat(F_query,',');
end;
if F_condition<>nil then begin
StrCat(F_query,' ');
StrCat(F_query,F_condition);
end;
end;
MODIFY_DELETE: begin
StrCopy(F_query,'DELETE FROM ');
StrCat(F_query,StrPCopy(pStrTemp,F_table));
if F_condition<>nil then begin
StrCat(F_query,' ');
StrCat(F_query,F_condition);
end;
end;
end;
end; {with}
end;
// ---------------
procedure TmySQLClientModify.PrepareCreateTableTask(
Table : pchar;
const TaskName : string;
OnComplete : TmySQLClientTask_OnComplete;
OnError : TmySQLClientTask_OnError
);
var
T : TmySQLClientTaskData;
begin
T:=TmySQLClientTaskData.Create;
with T do begin
FName :=TaskName;
FPrepared :=TRUE;
F_table :=Table;
F_modifytype:=MODIFY_CREATE_TABLE;
StrCopy(F_condition,'');
end;
Combine(T);
FTaskHandler.Thread.Prepare_mysql_query(task_mysql_query,T.F_Query,TaskName,_OnComplete,_OnError,OnComplete,OnError);
T.Free;
Reset;
end;
procedure TmySQLClientModify.PrepareCreateTable(Table : pchar; const TaskName : string);
begin
PrepareCreateTableTask(Table,TaskName,FDefault_OnComplete,FDefault_OnError);
end;
// ---------------
procedure TmySQLClientModify.PrepareDropTableTask(
Table : pchar;
const TaskName : string;
OnComplete : TmySQLClientTask_OnComplete;
OnError : TmySQLClientTask_OnError
);
var
T : TmySQLClientTaskData;
begin
T:=TmySQLClientTaskData.Create;
with T do begin
FName :=TaskName;
FPrepared :=TRUE;
F_table :=Table;
F_modifytype:=MODIFY_DROP_TABLE;
StrCopy(F_condition,'');
end;
Combine(T);
FTaskHandler.Thread.Prepare_mysql_query(task_mysql_query,T.F_Query,TaskName,_OnComplete,_OnError,OnComplete,OnError);
T.Free;
Reset;
end;
procedure TmySQLClientModify.PrepareDropTable(Table : pchar; const TaskName : string);
begin
PrepareDropTableTask(Table,TaskName,FDefault_OnComplete,FDefault_OnError);
end;
// ---------------
procedure TmySQLClientModify.PrepareInsertTask(
Table : pchar;
const TaskName : string;
OnComplete : TmySQLClientTask_OnComplete;
OnError : TmySQLClientTask_OnError
);
var
T : TmySQLClientTaskData;
begin
T:=TmySQLClientTaskData.Create;
with T do begin
FName :=TaskName;
FPrepared :=TRUE;
F_table :=Table;
F_modifytype:=MODIFY_INSERT;
StrCopy(F_condition,'');
end;
Combine(T);
FTaskHandler.Thread.Prepare_mysql_query(task_mysql_query,T.F_Query,T.FName,_OnComplete,_OnError,OnComplete,OnError);
T.Free;
Reset;
end;
procedure TmySQLClientModify.PrepareInsert(Table : pchar; const TaskName : string);
begin
PrepareInsertTask(Table,TaskName,FDefault_OnComplete,FDefault_OnError);
end;
// ---------------
procedure TmySQLClientModify.PrepareUpdateTask(
Table, Condition : pchar;
const TaskName : string;
OnComplete : TmySQLClientTask_OnComplete;
OnError : TmySQLClientTask_OnError
);
var
T : TmySQLClientTaskData;
begin
T:=TmySQLClientTaskData.Create;
with T do begin
FName :=TaskName;
FPrepared :=TRUE;
F_table :=Table;
F_modifyType:=MODIFY_UPDATE;
StrCopy(F_condition,Condition);
end;
Combine(T);
FTaskHandler.Thread.Prepare_mysql_query(task_mysql_query,T.F_Query,T.FName,_OnComplete,_OnError,OnComplete,OnError);
T.Free;
if FTaskHandler.FThreaded then Reset;
end;
procedure TmySQLClientModify.PrepareUpdate(Table, Condition : pchar; const TaskName : string);
begin
PrepareUpdateTask(Table,Condition,TaskName,FDefault_OnComplete,FDefault_OnError);
end;
// ---------------
procedure TmySQLClientModify.PrepareUpdateStringTask(
Table : pchar; const Condition : string;
const TaskName : string;
OnComplete : TmySQLClientTask_OnComplete;
OnError : TmySQLClientTask_OnError
);
var
T : TmySQLClientTaskData;
begin
T:=TmySQLClientTaskData.Create;
with T do begin
FName :=TaskName;
FPrepared :=TRUE;
F_table :=Table;
F_modifytype:=MODIFY_UPDATE;
StrPCopy(F_condition,Condition);
end;
Combine(T);
FTaskHandler.Thread.Prepare_mysql_query(task_mysql_query,T.F_Query,T.FName,_OnComplete,_OnError,OnComplete,OnError);
T.Free;
if FTaskHandler.FThreaded then Reset;
end;
procedure TmySQLClientModify.PrepareUpdateString(Table : pchar; const Condition : string; const TaskName : string);
begin
PrepareUpdateStringTask(Table,Condition,TaskName,FDefault_OnComplete,FDefault_OnError);
end;
// ---------------
procedure TmySQLClientModify.PrepareReplaceIntoTask(
Table, Condition : pchar;
const TaskName : string;
OnComplete : TmySQLClientTask_OnComplete;
OnError : TmySQLClientTask_OnError
);
var
T : TmySQLClientTaskData;
begin
T:=TmySQLClientTaskData.Create;
with T do begin
FName :=TaskName;
FPrepared :=TRUE;
F_table :=Table;
F_modifyType:=MODIFY_REPLACE_INTO;
StrCopy(F_condition,Condition);
end;
Combine(T);
FTaskHandler.Thread.Prepare_mysql_query(task_mysql_query,T.F_Query,T.FName,_OnComplete,_OnError,OnComplete,OnError);
T.Free;
if FTaskHandler.FThreaded then Reset;
end;
procedure TmySQLClientModify.PrepareReplaceInto(Table, Condition : pchar; const TaskName : string);
begin
PrepareReplaceIntoTask(Table,Condition,TaskName,FDefault_OnComplete,FDefault_OnError);
end;
// ---------------
procedure TmySQLClientModify.PrepareReplaceIntoStringTask(
Table : pchar; const Condition : string;
const TaskName : string;
OnComplete : TmySQLClientTask_OnComplete;
OnError : TmySQLClientTask_OnError
);
var
T : TmySQLClientTaskData;
begin
T:=TmySQLClientTaskData.Create;
with T do begin
FName :=TaskName;
FPrepared :=TRUE;
F_table :=Table;
F_modifytype:=MODIFY_REPLACE_INTO;
StrPCopy(F_condition,Condition);
end;
Combine(T);
FTaskHandler.Thread.Prepare_mysql_query(task_mysql_query,T.F_Query,T.FName,_OnComplete,_OnError,OnComplete,OnError);
T.Free;
if FTaskHandler.FThreaded then Reset;
end;
procedure TmySQLClientModify.PrepareReplaceIntoString(Table : pchar; const Condition : string; const TaskName : string);
begin
PrepareReplaceIntoStringTask(Table,Condition,TaskName,FDefault_OnComplete,FDefault_OnError);
end;
// ---------------
procedure TmySQLClientModify.PrepareDeleteTask(
Table, Condition : pchar;
const TaskName : string;
OnComplete : TmySQLClientTask_OnComplete;
OnError : TmySQLClientTask_OnError
);
var
T : TmySQLClientTaskData;
begin
T:=TmySQLClientTaskData.Create;
with T do begin
FName :=TaskName;
FPrepared :=TRUE;
F_table :=Table;
F_modifytype:=MODIFY_DELETE;
StrCopy(F_condition,Condition);
end;
Combine(T);
FTaskHandler.Thread.Prepare_mysql_query(task_mysql_query,T.F_Query,T.FName,_OnComplete,_OnError,OnComplete,OnError);
T.Free;
if FTaskHandler.FThreaded then Reset;
end;
procedure TmySQLClientModify.PrepareDelete(Table, Condition : pchar; const TaskName : string);
begin
PrepareDeleteTask(Table,Condition,TaskName,FDefault_OnComplete,FDefault_OnError);
end;
// ---------------
procedure TmySQLClientModify.PrepareDeleteStringTask(
Table : pchar; const Condition : string;
const TaskName : string;
OnComplete : TmySQLClientTask_OnComplete;
OnError : TmySQLClientTask_OnError
);
var
T : TmySQLClientTaskData;
begin
T:=TmySQLClientTaskData.Create;
with T do begin
FName :=TaskName;
FPrepared :=TRUE;
F_table :=Table;
F_modifytype:=MODIFY_DELETE;
StrPCopy(F_condition,Condition);
end;
Combine(T);
FTaskHandler.Thread.Prepare_mysql_query(task_mysql_query,T.F_Query,T.FName,_OnComplete,_OnError,OnComplete,OnError);
T.Free;
if FTaskHandler.FThreaded then Reset;
end;
procedure TmySQLClientModify.PrepareDeleteString(Table : pchar; const Condition : string; const TaskName : string);
begin
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -