원격 데이터베이스를 사용하는 데스크톱 애플리케이션이 있습니다. 불행히도 메모리 제한을 변경할 수 없습니다. 로컬 데이터베이스 또는 LAN 데이터베이스를 사용할 때 애플리케이션이 좋아졌습니다. 하지만 원격 데이터베이스를 사용할 때 종종 "mysql 서버가 사라졌다"는 오류가 발생했습니다. 내 가정은 내가 잘 연결을 사용하지 않는 것입니다. 나는 ado.committrans와 ado.begintrans를 수행하지만 didnt는 ado.close 또는 ado.free를 수행합니다. 나는이의 예 ... 내가 그들을 배치해야합니까 내가 사용 법석 어디에 어떤 기능을해야하는 각 DBGrid를 위해 보여주는를 포함한 거래 나 뭔가를 .... 내 호스팅 설정은 다음과 같습니다?mysql 서버가 피하는 데 adoconection을 사용하는 예제가 필요합니다.
> safe mode = Off (tidak dapat diubah) memory_limit = 256M (MAXIMUM) max_execution_time = 30 (MAXIMUM in seconds) max_input_time = 60 (MAXIMUM in seconds) post_max_size = 64M (MAXIMUM) upload_max_filesize = 64M (MAXIMUM) enable_dl = Off (tidak dapat diubah) Stimultan connection: 25 connections/koneksi **Time out without activity: 60 sec**
내 프로젝트에 연결되어 있지 않은지 궁금합니다.
여기 내 코드 :
Procedure TForm1.show;
Begin
with query do begin
sql.clear;//menghapus query yang masih ada jika ada
sql.Text:='select * from daftar where tanggal = curdate() order by id asc';
open;//membuka query
end;
end;
function AddLeadingZeroes(const aNumber, Length : integer) : string;
begin
result := SysUtils.Format('%.*d', [Length, aNumber]) ;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
a:string;
begin
a:=AddLeadingZeroes(strtoint(edit3.Text),4);
edit3.text:=a;
edit2.text:=AnsiUpperCase(edit2.text);
if (edit2.text='') or (edit3.text='')
then
begin
showmessage('Nomor Medrek HARUS diisi terlebih dahulu');
edit2.setfocus
end
else
begin
con.BeginTrans;
query1.SQL.Clear;
query1.SQL.text :='Select Nama from medrek where LETTER='+QuotedStr(edit2.text)+'AND ID='+QuotedStr(edit3.text)+';';
Screen.Cursor:=crHourGlass;
query1.open;
If query1.RECORDCOUNT = 0
Then
begin
ShowMessage('NOMOR MEDREK BELUM TERDAFTAR') ;
edit1.Color := clMaroon;
edit1.clear ;
con.CommitTrans;
end
ELSE
begin
edit1.text := query1.FieldByName('Nama').AsString;
edit1.Color := clYellow;
query.Requery();
con.CommitTrans;
END;
query1.close;
Screen.Cursor:=crDefault;
end
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
if (edit1.text='') or (combobox1.text='') or (combobox2.text='') or (combobox3.text='') or (combobox4.text='') then
begin
MessageDlg('DATA BELUM LENGKAP !',mtError, mbOKCancel, 0);
end
else
begin
Screen.Cursor:=crHourGlass;
con.BeginTrans;
with query do
begin
sql.Clear;
SQL.Text:='INSERT INTO daftar (tanggal,NO_MEDREC, NAMA, lAMA, STATUS, KETERANGAN, POLI) VALUES ("'+formatdatetime('yyyy-mm-dd',today())+'","'+concat(Edit2.Text,'-',edit3.text)+'","'+Edit1.Text+'","'+combobox1.text+'","'+combobox3.text+'","'+combobox2.text+'","'+combobox4.text+'")';
execsql;//untuk mengeksekusi perintah SQL
Showmessage('Data berhasil disimpan');
show;
end;
con.CommitTrans;
Screen.Cursor:=crDefault;
button1.Enabled:=false;
button2.Enabled:=false;
query1.close;
end;
end;
procedure TForm1.ComboBox3Click(Sender: TObject);
begin
IF combobox3.text='UMUM' THEN
begin
EDIT5.Color:=clBlack;
EDIT5.CLEAR;
EDIT5.ReadOnly := true
END
ELSE
BEGIN
EDIT5.Color:=clWHITE ;
EDIT5.ReadOnly := FALSE
END
END;
procedure TForm1.Button3Click(Sender: TObject);
begin
con.connected:=true;
with query do
begin
sql.Clear;
SQL.Text:='Select * from daftar where tanggal = curdate()';
execsql;//untuk mengeksekusi perintah SQL
show;
end;
button1.Enabled:=TRUE;
button2.Enabled:=TRUE;
edit1.Clear;
edit2.Clear;
edit3.Clear;
edit5.Clear;
combobox1.ClearSelection;
combobox2.ClearSelection;
Combobox3.ClearSelection;
combobox4.ClearSelection;
edit2.SetFocus;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
con.connected:=true;
with query do
begin
sql.Clear;
SQL.Text:='Select * from daftar where tanggal = curdate()';
execsql;//untuk mengeksekusi perintah SQL
show;
end;
Show;
end;
procedure TForm1.P2Click(Sender: TObject);
begin
FORM2.SHOWMODAL
end;
procedure TForm1.P1Click(Sender: TObject);
begin
form3.showmodal;
end;
procedure TForm1.CETAKClick(Sender: TObject);
begin
form4.show;
end;
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if DBGrid1.DataSource.DataSet.RecNo mod 2 =0 then
DBGrid1.Canvas.Brush.Color := clskyBlue; //pilih warnanya
DBGrid1.DefaultDrawColumnCell(rect, datacol, column, state);
if DataSource1.DataSet.RecNo > 0 then
begin
if Column.Title.Caption = 'No.' then
DBGrid1.Canvas.TextOut(Rect.Left + 2, Rect.Top, IntToStr(DataSource1.DataSet.RecNo));
end;
end;
procedure TForm1.CARIHISTORYPASIEN1Click(Sender: TObject);
begin
form5.show;
end;
End.
i 속성을 속성에 직접 설정합니다. 코드를 사용하지 않고 ,,,, 연결을위한 공급자. 제공자는 = MSDASQL.1 및
이 .. 감사합니다 adoconnection.connected에 = 사실 확인 MySQL 서버에 대한 가장 일반적인 이유는 오류가 서버가 시간 초과 및 폐쇄 것을 입니다 사라 졌는지
아래에 설명되어 있습니다. 어느 지점에서 서버로부터'select 1'을 보냅니다. – Drew
Ado를 사용하여 MySql 서버에 연결할 수 있도록 어떤 드라이버를 사용하고 있습니까? Odbc? – MartynA
내 사무실에서 일반적인 PC가 듀얼 코어 32 비트이기 때문에 ODBC 3.51을 사용하고 있습니다. XP 또는 7을 사용하는 1GB RAM이 있습니다. –