CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  数据库相关

求一DELPHI操作MYSQL数据库的小例子

楼主ld9702(ld)2006-07-03 08:39:10 在 Delphi / 数据库相关 提问

没有使用过MYSQL数据库,求一DELPHI操作MYSQL数据库的小例子,问题解决,马上结贴 问题点数:50、回复次数:6Top

1 楼maming2003(關機.睡覺!)回复于 2006-07-03 17:17:41 得分 0

www.2ccc.com里面有Top

2 楼gerrylc(lc)回复于 2006-07-04 18:10:37 得分 0

搜索一下Top

3 楼wangdajunxx(弱智男孩)回复于 2006-10-10 15:53:07 得分 0

//   tabs   =   2  
  //   -----------------------------------------------------------------------------------------------  
  //  
  //                                             MySQL   Client   API   for   Delphi   4   and   later   -   Test   Suite  
  //  
  //                                             Copyright   ?1999,   2000   Medienagentur   Fichtner   &   Meyer  
  //                                                                     Written   by   Matthias   Fichtner  
  //  
  //   -----------------------------------------------------------------------------------------------  
  //  
  //                                               Please   see   mysql_test.dpr   for   detailed   information.  
  //  
  //   -----------------------------------------------------------------------------------------------  
  //                                               Please   send   questions,   bug   reports   and   suggestions  
  //                                             regarding   this   code   to:   mfichtner@fichtner-meyer.com  
  //   -----------------------------------------------------------------------------------------------  
  //                                                 This   code   is   provided   "as   is"   without   express   or  
  //                                           implied   warranty   of   any   kind.   Use   it   at   your   own   risk.  
  //   -----------------------------------------------------------------------------------------------  
   
  unit   mysql_test_main;  
   
  //   -----------------------------------------------------------------------------------------------  
  INTERFACE  
  //   -----------------------------------------------------------------------------------------------  
   
  uses  
  Windows,   SysUtils,   Forms,   Classes,   Controls,   StdCtrls,   Dialogs;  
   
  type  
  TMain   =   class(TForm)  
  Report:   TMemo;  
  Save:   TSaveDialog;  
  procedure   FormActivate(Sender:   TObject);  
  end;  
   
  var  
  Main:   TMain;  
   
  //   -----------------------------------------------------------------------------------------------  
  IMPLEMENTATION  
  //   -----------------------------------------------------------------------------------------------  
   
  {$R   *.DFM}  
   
  uses  
  mysql,   mysql_test_dialog;  
   
  const  
  CRLF   =   #13#10;  
   
  procedure   TMain.FormActivate(Sender:   TObject);  
  var  
  MySQL:   PMYSQL;  
  MyHost:   string;  
  MyPort:   integer;  
  MyUser:   string;  
  MyPass:   string;  
  MyTime:   longword;  
  MyComp:   integer;  
  MyDebg:   boolean;  
  MyShut:   boolean;  
   
  procedure   Fail(Msg:   string   =   '');  
  begin  
  //   mysql_errno,   mysql_error  
  if   Msg   =   ''   then   Msg   :=   Format('%d   -   %s',   [mysql_errno(MySQL),   mysql_error(MySQL)]);  
  raise   Exception.Create(CRLF   +   CRLF   +   'Fatal   Error'   +   CRLF   +   '==========='   +   CRLF   +   Msg);  
  end;  
   
  procedure   Versions;  
  begin  
  Report.Lines.Add(CRLF);  
  Report.Lines.Add('数据库版本');  
  Report.Lines.Add('========');  
  //   mysql_get_server_info  
  Report.Lines.Add('服务器:   '   +   mysql_get_server_info(MySQL));  
  //   mysql_get_client_info  
  Report.Lines.Add('客户端:   '   +   mysql_get_client_info);  
  //   mysql_get_proto_info  
  Report.Lines.Add('协议:   '   +   intToStr(mysql_get_proto_info(MySQL)));  
  end;  
   
  procedure   Statistics;  
  var  
  Stats:   string;  
  P:   integer;  
  begin  
  Report.Lines.Add(CRLF);  
  Report.Lines.Add('统计');  
  Report.Lines.Add('==========');  
  //   mysql_stat  
  Stats   :=   mysql_stat(MySQL);  
  P   :=   pos('     ',   Stats);  
  while   P   >   0   do   begin  
  Report.Lines.Add(copy(Stats,   1,   P   -   1));  
  Stats   :=   copy(Stats,   P   +   2,   MaxInt);  
  P   :=   pos('     ',   Stats);  
  end;  
  Report.Lines.Add(Stats);  
  end;  
   
  procedure   Processes;  
  var  
  Phantom:   PMYSQL;  
  ThreadId:   longword;  
  Processes:   PMYSQL_RES;  
  Process:   PMYSQL_ROW;  
  Fields:   longword;  
  Rows:   my_ulonglong;  
  Prefix:   string;  
  Index:   longword;  
  begin  
  Report.Lines.Add(CRLF);  
  Report.Lines.Add('进程');  
  Report.Lines.Add('=========');  
  //   mysql_init  
  Phantom   :=   mysql_init(nil);  
  if   Phantom   =   nil   then   Fail('Couldn''t   init   PMYSQL   object');  
  //   mysql_connect  
  if   mysql_connect(Phantom,   pChar(MyHost),   pChar(MyUser),   pChar(MyPass))   =   nil   then   Fail;  
  try  
                                                  Report.Lines.Add('数据库连接成功');  
  //   mysql_thread_id  
  Report.Lines.Add(Format('*   Created   phantom   process   (Thread   Id:   %d).',   [mysql_thread_id(Phantom)]));  
  //   mysql_thread_id  
  ThreadId   :=   mysql_thread_id(MySQL);  
  //   mysql_kill  
  if   mysql_kill(MySQL,   ThreadId)   <>   0   then   Fail;  
  Report.Lines.Add(Format('*   Killed   main   process   (Thread   Id:   %d).',   [ThreadId]));  
  //   mysql_ping,   mysql_error  
  if   mysql_ping(MySQL)   <>   0   then   Report.Lines.Add('*   '   +   mysql_error(MySQL)   +   '.');  
  //   mysql_ping  
  if   mysql_ping(MySQL)   <>   0   then   Fail;  
  //   mysql_thread_id  
  Report.Lines.Add(Format('*   Re-connected   using   Ping   (Thread   Id:   %d).',   [mysql_thread_id(MySQL)]));  
  //   mysql_list_processes  
  Processes   :=   mysql_list_processes(MySQL);  
  if   Processes   =   nil   then   Fail;  
  try  
  //   mysql_num_fields  
  Fields   :=   mysql_num_fields(Processes);  
  //   mysql_num_rows  
  Rows   :=   mysql_num_rows(Processes);  
  while   Rows   >   0   do   begin  
  //   mysql_fetch_row  
  Process   :=   mysql_fetch_row(Processes);  
  for   Index   :=   0   to   Fields   -   1   do   begin  
  if   Index   =   0   then   Prefix   :=   CRLF   +   '+   '   else   Prefix   :=   '     -   ';  
  //   mysql_fetch_field_direct  
  Report.Lines.Add(Prefix   +   mysql_fetch_field_direct(Processes,   Index).name   +   ':   '   +   Process[Index]);  
  end;  
  dec(Rows);  
  end;  
  finally  
  //   mysql_free_result  
  mysql_free_result(Processes);  
  end;  
  //   mysql_thread_id  
  ThreadId   :=   mysql_thread_id(Phantom);  
  //   mysql_kill  
  if   mysql_kill(Phantom,   ThreadId)   <>   0   then   Fail;  
  Report.Lines.Add('');  
  Report.Lines.Add(Format('*   Killed   phantom   process   (Thread   Id:   %d).',   [ThreadId]));  
  finally  
  //mysql_close  
  mysql_close(Phantom);  
  end;  
  end;  
   
  procedure   DatabasesTablesAndFields;  
  var  
  Unique:   string;  
  DBName:   string;  
  TBName:   string;  
  const  
  Spaces   =   '                                                                                                                                 ';  
  Dashes   =   '----------------------------------------------------------------';  
  Indent   =   '     ';  
   
  procedure   ListCurrentDatabases;              
  var  
  Databases:   PMYSQL_RES;  
  Database:   PMYSQL_ROW;  
  DatabaseRows:   my_ulonglong;  
  Tables:   PMYSQL_RES;  
  Table:   PMYSQL_ROW;  
  TableRows:   my_ulonglong;  
  begin  
  //   mysql_list_dbs  
  Databases   :=   mysql_list_dbs(MySQL,   nil);  
  if   Databases   =   nil   then   Fail;  
  Top

4 楼wangdajunxx(弱智男孩)回复于 2006-10-10 15:53:34 得分 0

try  
  //   mysql_num_rows  
  DatabaseRows   :=   mysql_num_rows(Databases);  
  Report.Lines.Add(Format('*   Found   %d   existing   databases   on   server:',   [DatabaseRows]));  
  while   DatabaseRows   >   0   do   begin  
  //   mysql_fetch_row  
  Database   :=   mysql_fetch_row(Databases);  
  //   mysql_select_db  
      {   这个函数有问题} if   mysql_select_db(MySQL,   Database[0])   <>   0   then   Fail;  
  //   mysql_list_tables  
  Tables   :=   mysql_list_tables(MySQL,   nil);  
  if   Tables   =   nil   then   Fail;  
  try  
  //   mysql_num_rows  
  TableRows   :=   mysql_num_rows(Tables);  
  Report.Lines.Add(CRLF   +   Format('     +   %s   (%d   tables)',   [Database[0],   TableRows]));  
  while   TableRows   >   0   do   begin  
  //   mysql_fetch_row  
  Table   :=   mysql_fetch_row(Tables);  
  Report.Lines.Add('         -   '   +   Table[0]);  
  dec(TableRows);  
  end;  
  finally  
  //   mysql_free_result  
  mysql_free_result(Tables);  
  end;  
  dec(DatabaseRows);  
  end;  
  finally  
  //   mysql_free_result  
  mysql_free_result(Databases);  
  end;  
  end;  
   
  procedure   CreateTestDatabase;  
  var  
  Fields:   PMYSQL_RES;  
  FieldCount:   longword;  
  Field:   PMYSQL_FIELD;  
  Buffer,   Offset:   longword;  
  I:   integer;  
  J:   integer;  
  Name:   string;  
  Escaped:   array[0..32]   of   char;  
  Value:   word;  
  Query:   string;  
  const  
  FalseTrue:   array[boolean]   of   string   =   ('false',   'true');  
  begin  
  //   mysql_create_db  
  if   mysql_create_db(MySQL,   pChar(DBName))   <>   0   then   Fail;  
  Report.Lines.Add('');  
  Report.Lines.Add('*   Created   database   "'   +   DBName   +   '".');  
  //   mysql_select_db  
  if   mysql_select_db(MySQL,   pChar(DBName))   <>   0   then   Fail;  
  //   mysql_query  
  if   mysql_query(MySQL,   pChar('CREATE   TABLE   '   +   TBName   +   '   (id   SMALLINT   (3)   ZEROFILL   NOT   NULL   AUTO_INCREMENT,   string   CHAR   (16)   NOT   NULL,   value   TINYINT   UNSIGNED   DEFAULT   1   NULL,   PRIMARY   KEY   (id),   INDEX   (string))'))   <>   0   then   Fail;  
  //   mysql_list_fields  
  Fields   :=   mysql_list_fields(MySQL,   pChar(TBName),   nil);  
  if   Fields   =   nil   then   Fail;  
  try  
  Offset   :=   $ffffffff;  
  //   mysql_num_fields  
  FieldCount   :=   mysql_num_fields(Fields);  
  Report.Lines.Add('');  
  Report.Lines.Add(Format('*   Created   table   "%s"   with   %d   fields:',   [TBName,   FieldCount]));  
  for   I   :=   0   to   FieldCount   -   1   do   begin  
  //   mysql_field_tell  
  Buffer   :=   mysql_field_tell(Fields);  
  //   mysql_fetch_field  
  Field   :=   mysql_fetch_field(Fields);  
  //   IS_PRI_KEY  
  if   IS_PRI_KEY(Field.flags)   then   Offset   :=   Buffer;  
  Report.Lines.Add(CRLF   +   '     +   '   +   Field.name);  
  //   IS_PRI_KEY  
  Report.Lines.Add('         -   IS_PRI_KEY   =   '   +   FalseTrue[IS_PRI_KEY(Field.flags)]);  
  //   IS_NOT_NULL  
  Report.Lines.Add('         -   IS_NOT_NULL   =   '   +   FalseTrue[IS_NOT_NULL(Field.flags)]);  
  //   IS_BLOB  
  Report.Lines.Add('         -   IS_BLOB   =   '   +   FalseTrue[IS_BLOB(Field.flags)]);  
  //   IS_NUM  
  Report.Lines.Add('         -   IS_NUM   =   '   +   FalseTrue[IS_NUM(Field._type)]);  
  end;  
  if   Offset   <>   $ffffffff   then   begin  
  //   mysql_field_seek  
  mysql_field_seek(Fields,   Offset);  
  //   mysql_fetch_field  
  Field   :=   mysql_fetch_field(Fields);  
  Report.Lines.Add('');  
  Report.Lines.Add(Indent   +   'Field   "'   +   Field.name   +   '"   is   the   primary   index.');  
  end;  
  finally  
  //   mysql_free_result  
  mysql_free_result(Fields);  
  end;  
  randomize;  
  for   I   :=   1   to   128   do   begin  
  Name   :=   '';  
  for   J   :=   1   to   8   +   random(9)   do   appendStr(Name,   chr(ord('!')   +   random(ord('~')   -   ord('!')   +   1)));  
  //   mysql_escape_string  
  mysql_escape_string(Escaped,   pChar(Name),   length(Name));  
  Value   :=   random(256);  
  //   mysql_query  
  if   mysql_query(MySQL,   pChar(Format('INSERT   INTO   %s   (string,   value)   VALUES   ("%s",   %d)',   [TBName,   Escaped,   Value])))   <>   0   then   Fail;  
  end;  
  Report.Lines.Add('');  
  //   mysql_insert_id  
  Report.Lines.Add(Format('*   Populated   table   "%s"   with   %d   rows   of   random   data.',   [TBName,   mysql_insert_id(MySQL)]));  
  Query   :=   'DELETE   FROM   '   +   TBName   +   '   WHERE   value   <   32';  
  //   mysql_query  
  if   mysql_query(MySQL,   pChar(Query))   <>   0   then   Fail;  
  Report.Lines.Add('');  
  //   mysql_affected_rows  
  Report.Lines.Add(Format('*   Deleted   %d   rows   from   table   "%s"   using   SQL   query',   [mysql_affected_rows(MySQL),   TBName]));  
  Report.Lines.Add(Indent   +   '"'   +   Query   +   '".');  
  end;  
   
  procedure   QueryTestTable1;  
  var  
  Query:   string;  
  Result:   PMYSQL_RES;  
  Line:   string;  
  Width:   integer;  
  Field:   PMYSQL_FIELD;  
  FieldCount:   longword;  
  Lengths:   PMYSQL_LENGTHS;  
  Row:   PMYSQL_ROW;  
  I:   integer;  
  Buffer:   string;  
  const  
  Limit   =   10;  
  begin  
  Query   :=   Format('SELECT   *   FROM   %s   WHERE   value   >=   128   ORDER   BY   value   LIMIT   %d',   [TBName,   Limit]);  
  //   mysql_query  
  if   mysql_query(MySQL,   pChar(Query))   <>   0   then   Fail;  
  //   mysql_use_result  
  Result   :=   mysql_use_result(MySQL);  
  if   Result   =   nil   then   Fail;  
  try  
  Report.Lines.Add('');  
  Report.Lines.Add(Format('*   Selected   %d   rows   (max.)   from   table   "%s"   using   SQL   query',   [Limit,   TBName]));  
  Report.Lines.Add(Indent   +   '"'   +   Query   +   '":');  
  Report.Lines.Add('');  
  Line   :=   '';  
  Width   :=   0;  
  //   mysql_fetch_field  
  Field   :=   mysql_fetch_field(Result);  
  while   Field   <>   nil   do   begin  
  if   Line   <>   ''   then   begin  
  appendStr(Line,   '   ');  
  inc(Width);  
  end;  
  appendStr(Line,   copy(Field.name   +   Spaces,   1,   Field.length));  
  inc(Width,   Field.length);  
  //   mysql_fetch_field  
  Field   :=   mysql_fetch_field(Result);  
  end;  
  Report.Lines.Add(Indent   +   Line);  
  Report.Lines.Add(Indent   +   copy(Dashes,   1,   Width));  
  //   mysql_num_fields  
  FieldCount   :=   mysql_num_fields(Result);  
  //   mysql_fetch_row  
  Row   :=   mysql_fetch_row(Result);  
  while   Row   <>   nil   do   begin  
  Line   :=   '';  
  //   mysql_fetch_lengths  
  Lengths   :=   mysql_fetch_lengths(Result);  
  if   Lengths   =   nil   then   Fail;  
  for   I   :=   0   to   FieldCount   -   1   do   begin  
  if   Line   <>   ''   then   appendStr(Line,   '   ');  
  SetString(Buffer,   Row[I],   Lengths[I]);  
  //   mysql_fetch_field_direct  
  appendStr(Line,   copy(Buffer   +   Spaces,   1,   mysql_fetch_field_direct(Result,   I).length));Top

5 楼wangdajunxx(弱智男孩)回复于 2006-10-10 15:53:59 得分 0

end;  
  Report.Lines.Add(Indent   +   Line);  
  //   mysql_fetch_row  
  Row   :=   mysql_fetch_row(Result);  
  end;  
  //   mysql_eof  
  if   mysql_eof(Result)   =   0   then   Fail;  
  finally  
  //   mysql_free_result  
  mysql_free_result(Result);  
  end;  
  end;  
   
  procedure   AlterTestTable;  
  var  
  Query1:   string;  
  Query2:   string;  
  Info:   pChar;  
  begin  
  Query1   :=   Format('ALTER   TABLE   %s   MODIFY   value   TINYINT   UNSIGNED   NOT   NULL',   [TBName]);  
  Query2   :=   Format('ALTER   IGNORE   TABLE   %s   ADD   UNIQUE   (value)',   [TBName]);  
  //   mysql_query  
  if   mysql_query(MySQL,   pChar(Query1))   <>   0   then   Fail;  
  //   mysql_query  
  if   mysql_query(MySQL,   pChar(Query2))   <>   0   then   Fail;  
  //   mysql_info  
  Info   :=   mysql_info(MySQL);  
  if   Info   =   nil   then   Fail;  
  Report.Lines.Add('');  
  Report.Lines.Add(Format('*   Altered   table   "%s"   using   SQL   queries',   [TBName]));  
  Report.Lines.Add(Indent   +   '"'   +   Query1   +   '"   and');  
  Report.Lines.Add(Indent   +   '"'   +   Query2   +   '":');  
  Report.Lines.Add('');  
  Report.Lines.Add(Indent   +   Info);  
  end;  
   
  procedure   QueryTestTable2;  
  var  
  Query:   string;  
  Result:   PMYSQL_RES;  
  Line:   string;  
  Width:   integer;  
  Fields:   PMYSQL_FIELDS;  
  FieldCount:   longword;  
  Row:   PMYSQL_ROW;  
  RowCount:   my_ulonglong;  
  I:   integer;  
  J:   integer;  
  Offset:   MYSQL_ROW_OFFSET;  
  begin  
  Query   :=   'SELECT   *   FROM   '   +   TBName   +   '   WHERE   length(string)   =   16   ORDER   BY   id';  
  //   mysql_real_query  
  if   mysql_real_query(MySQL,   pChar(Query),   length(Query))   <>   0   then   Fail;  
  //   mysql_store_result  
  Result   :=   mysql_store_result(MySQL);  
  if   Result   =   nil   then   Fail;  
  try  
  Report.Lines.Add('');  
  //   mysql_num_rows  
  Report.Lines.Add(Format('*   Selected   %d   rows   from   table   "%s"   using   SQL   query',   [mysql_num_rows(Result),   TBName]));  
  Report.Lines.Add(Indent   +   '"'   +   Query   +   '":');  
  Report.Lines.Add('');  
  Line   :=   '';  
  Width   :=   0;  
  //   mysql_fetch_fields  
  Fields   :=   mysql_fetch_fields(Result);  
  //   mysql_field_count  
  FieldCount   :=   mysql_field_count(MySQL);  
  for   I   :=   0   to   FieldCount   -   1   do   begin  
  if   Line   <>   ''   then   begin  
  appendStr(Line,   '   ');  
  inc(Width);  
  end;  
  appendStr(Line,   copy(Fields[I].name   +   Spaces,   1,   Fields[I].length));  
  inc(Width,   Fields[I].length);  
  end;  
  Report.Lines.Add(Indent   +   Line);  
  Report.Lines.Add(Indent   +   copy(Dashes,   1,   Width));  
  //   mysql_num_rows  
  RowCount   :=   mysql_num_rows(Result);  
  Offset   :=   nil;  
  for   I   :=   RowCount   -   1   downto   0   do   begin  
  //   mysql_data_seek  
  mysql_data_seek(Result,   I);  
  //   mysql_row_tell  
  if   I   =   (RowCount   -   1)   div   2   then   Offset   :=   mysql_row_tell(Result);  
  //   mysql_fetch_row  
  Row   :=   mysql_fetch_row(Result);  
  Line   :=   '';  
  for   J   :=   0   to   FieldCount   -   1   do   begin  
  if   Line   <>   ''   then   appendStr(Line,   '   ');  
  appendStr(Line,   copy(Row[J]   +   Spaces,   1,   Fields[J].length));  
  end;  
  Report.Lines.Add(Indent   +   Line);  
  end;  
  if   Offset   <>   nil   then   begin  
  //   mysql_row_seek  
  mysql_row_seek(Result,   Offset);  
  //   mysql_fetch_row  
  Row   :=   mysql_fetch_row(Result);  
  Report.Lines.Add('');  
  //   mysql_fetch_field_direct  
  Report.Lines.Add(Indent   +   Format('The   %s   of   the   row   closest   to   the'   +   CRLF   +  
  Indent   +   'middle   of   this   selection   is   %s   ...',   [mysql_fetch_field_direct(Result,   0).name,   Row[0]]));  
  end;  
  finally  
  //   mysql_free_result  
  mysql_free_result(Result);  
  end;  
  end;  
   
  procedure   DropTestDatabase;  
  begin  
  //   mysql_drop_db  
  if   mysql_drop_db(MySQL,   pChar(DBName))   <>   0   then   Fail;  
  Report.Lines.Add('');  
  Report.Lines.Add('*   Dropped   database   "'   +   DBName   +   '".');  
  end;  
   
  begin  
  Report.Lines.Add(CRLF);  
  Report.Lines.Add('Databases,   Tables   and   Fields');  
  Report.Lines.Add('============================');  
  ListCurrentDatabases;  
  Unique   :=   LowerCase(intToHex(GetTickCount,   8));  
  DBName   :=   'db_'   +   Unique;  
  TBName   :=   'tb_'   +   Unique;  
  CreateTestDatabase;  
  QueryTestTable1;  
  AlterTestTable;  
  QueryTestTable2;  
  DropTestDatabase;  
  end;  
   
  procedure   Miscellaneous;  
  var  
  ThreadId:   longword;  
  begin  
  Report.Lines.Add(CRLF);  
  Report.Lines.Add('Miscellaneous');  
  Report.Lines.Add('=============');  
  //   mysql_reload  
  if   mysql_reload(MySQL)   <>   0   then   Fail;  
  Report.Lines.Add('*   Asked   server   to   reload   permission   tables.');  
  if   MyDebg   then   begin  
  //   mysql_dump_debug_info  
  if   mysql_dump_debug_info(MySQL)   <>   0   then   Fail;  
  Report.Lines.Add('*   Asked   server   to   write   debug   info   to   log.');  
  end   else   begin  
  Report.Lines.Add('*   Skipped   asking   server   to   write   debug   info   to   log.');  
  end;  
  if   MyShut   then   begin  
  //   mysql_shutdown  
  if   mysql_shutdown(MySQL)   <>   0   then   Fail;  
  Report.Lines.Add('*   Asked   server   to   shut   down.');  
  end   else   begin  
  Report.Lines.Add('*   Skipped   asking   server   to   shut   down.');  
  //   mysql_thread_id  
  ThreadId   :=   mysql_thread_id(MySQL);  
  //   mysql_kill  
  if   mysql_kill(MySQL,   ThreadId)   <>   0   then   Fail;  
  Report.Lines.Add(Format('*   Killed   main   process   (Thread   Id:   %d).',   [ThreadId]));  
  end;  
  end;  
   
  begin  
  SetForegroundWindow(Handle);  
  Screen.Cursor   :=   crHourGlass;  
  if   Dialog.ShowModal   =   mrOk   then   begin  
  with   Dialog   do   begin  
  MyHost   :=   EditHost.Text;  
  MyPort   :=   strToIntDef(EditPort.Text,   MYSQL_PORT);  
  MyUser   :=   EditUser.Text;  
  MyPass   :=   EditPass.Text;  
  MyTime   :=   strToIntDef(EditTime.Text,   30);  
  MyComp   :=   integer(CheckComp.Checked)   *   CLIENT_COMPRESS;  
  MyDebg   :=   not   CheckDebg.Checked;  
  MyShut   :=   not   CheckShut.Checked;  
  end;  
  try  
  Report.Lines.Add(CRLF);  
  Report.Lines.Add(FormatDateTime('yyyy-mm-dd   hh:mm:ss',   Now)   +   '   -   Starting   Test   Suite   ...');  
  //   mysql_init  
  MySQL   :=   mysql_init(nil);  
  if   MySQL   =   nil   then   Fail('Couldn''t   init   PMYSQL   object');  
  try  
  //   mysql_options  
  if   mysql_options(MySQL,   MYSQL_OPT_CONNECT_TIMEOUT,   @MyTime)   <>   0   then   Fail;  
  //   mysql_real_connect  
  if   mysql_real_connect(MySQL,   pChar(MyHost),   pChar(MyUser),   pChar(MyPass),   nil,   MyPort,   nil,   MyComp)   =   nil   then   Fail;  
  //   mysql_get_host_info  
  Report.Lines.Add('');  
  Report.Lines.Add('Connected   to   MySQL   server   at   '   +   mysql_get_host_info(MySQL));  
  Versions;  
  Statistics;  
  Processes;  
  DatabasesTablesAndFields;               //出问题  
  Miscellaneous;  
  finally  
  //   mysql_close  
  mysql_close(MySQL);  
  end;  
  Report.Lines.Add(CRLF);  
  Report.Lines.Add(FormatDateTime('yyyy-mm-dd   hh:mm:ss',   Now)   +   '   -   Test   Suite   completed   succesfully!');  
  if   Save.Execute   then   Report.Lines.SaveToFile(Save.FileName);  
  except  
  Report.Lines.Add(Exception(ExceptObject).Message);  
  end;  
  end   else   Close;  
  Screen.Cursor   :=   crDefault;  
  end;  
   
  end.Top

6 楼ZJZM214120()回复于 2006-10-11 20:18:44 得分 0

添加控件不是更好啊。。在下SQL语句。。。。。。。比如说用ado啊。。。。。Top

相关问题

关键词

得分解答快速导航

  • 帖主:ld9702

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo