对mysql.pas的封装

引用的mysql.pas文件的版本是:04-Aug-2009.

嗯,在上一篇中已经贴出来了.  引用的动态库libmySQL.dll 在mysql的安装目录下有.

先把它封装成类 TMySql;

 

unit MySqlClass;

interface

uses
Windows, Messages, SysUtils, Classes,

mysql;

const
//定义命令 M_SQL_ClientCmd()函数使用

SHOWDATABASES
= 101; //获得所有的数据库
USEDB
= 102; //使用数据库
SHOWTABLES
= 103; //获得所有的表
USECHARNAME
= 104; //使用编码

FIELDCOUNT
= 105; //获得结果集的字段数
ROWCOUNT
= 106; //获得结果集的行数

//定义错误码 通过GetLastError()得到

ERROR_MYSQL_NOERROR
= 0; //无错误
ERROR_MYSQL_INIT
= 1; //初始化失败
ERROR_MYSQL_CONNECT
= 2; //连接服务器失败
ERROR_MYSQL_GETALLBASE
= 3; //获取databases失败
ERROR_MYSQL_SELECTDB
= 4; //查询table失败
ERROR_MYSQL_GETALLTABLE
= 5; //获取table失败
ERROR_MYSQL_QUERY
= 6; //执行QUERY失败
ERROR_MYSQL_NULLPOINTER
= 7; //空的函数指针

type
//回调函数
TMySqlDataCallBack
= procedure(nIndex: LongInt; sName: PChar; dateType: Byte;
dwUser: DWORD);
stdcall;

TMySql
= class
private
FLibHandle: PMYSQL;
FmySQL_Res: PMYSQL_RES;
FLastError: DWORD;
FCharName:
string;
Fdb:
string;
FClientVer:
string;
FSerVer:
string;
procedure SQL_ResIni();
function SQL_GetAllDataBase(lpBack:Pointer; UserData:LongInt):LongInt;
function SQL_GetAllTable(db: PAnsiChar; lpBack:Pointer; UserData:LongInt):LongInt;
procedure SetCharName(const Value: string);
procedure Setdb(const Value: string);
protected

public
function M_SQL_Init(): PAnsiChar;
procedure M_SQL_Clear();

function GetLastError():LongInt;

//连接服务器 返回为服务器版本号
function M_SQL_Connect(host, user, passwd, db:PAnsiChar; port: LongInt=3306): PAnsiChar;

function M_SQL_ClientCmd(cmd:LongInt; names:PAnsiChar;lpBack:Pointer; UserData:LongInt):LongInt;

//执行Query SQL语句
function M_SQL_Query(sqlLine: PAnsiChar):LongInt;

//Cmd 0:得到结果集 1:释放
function M_SQL_Select_Res(sql: PAnsiChar; Cmd:Byte):Pointer;

//获得字段
function M_SQL_fetch_field(Res: Pointer):Pointer;
function M_SQL_field_name(field: Pointer):PAnsiChar;

//获得查询结果
procedure M_SQL_data_seek(Res: Pointer; nIndex: LongInt);
function M_SQL_fetch_row(Res: Pointer):Pointer;

property CharName: string read FCharName write SetCharName;
property db: string read Fdb write Setdb;
property ClientVer: string read FClientVer;
property SerVer: string read FSerVer;
end;

implementation

function TMySql.M_SQL_Connect(host, user, passwd, db:PAnsiChar;
port:LongInt): PAnsiChar;
begin
Result :
= '';
SQL_ResIni();

if FLibHandle<>nil then
begin
mysql_close(FLibHandle);
FLibHandle :
= nil;
end;

FLibHandle :
= mysql_init(nil);
if FLibHandle=nil then
begin
FLastError :
= ERROR_MYSQL_INIT;
Exit;
end;

if mysql_real_connect(FLibHandle,host, user, passwd, db,port,nil,0) = nil then
begin
FLastError :
= ERROR_MYSQL_CONNECT;
Exit;
end;
Fdb :
= db;
Result :
= mysql_get_server_info(FLibHandle);
FSerVer :
= Result;
FCharName :
= mysql_character_set_name(FLibHandle);
end;

function TMySql.SQL_GetAllDataBase(lpBack:Pointer; UserData:LongInt): LongInt;
var
MYSQL_ROW: PMYSQL_ROW;
i: Integer;
begin
Result :
= -1;
FmySQL_Res :
= mysql_list_dbs(FLibHandle, nil);
if FmySQL_Res = nil then
begin
FLastError :
= ERROR_MYSQL_GETALLBASE;
Exit;
end;

if lpBack = nil then
begin
FLastError :
= ERROR_MYSQL_NULLPOINTER;
Exit;
end;

i :
= 0;
try
repeat
MYSQL_ROW :
= mysql_fetch_row(FmySQL_Res);
if MYSQL_ROW<>nil then
TMySqlDataCallBack(lpBack)(i,MYSQL_ROW^[
0],0,UserData);
Inc(i);
until MYSQL_ROW=nil;
finally
SQL_ResIni();
end;
Result :
= 0;
end;

function TMySql.SQL_GetAllTable(db: PAnsiChar; lpBack:Pointer; UserData:LongInt): LongInt;
var
SqlResult: Integer;
MYSQL_ROW: PMYSQL_ROW;
i: Integer;
begin
Result :
= -1;
SQL_ResIni();

SqlResult :
= mysql_select_db(FLibHandle, db);
if SqlResult <>0 then
begin
FLastError :
= ERROR_MYSQL_SELECTDB;
Exit;
end;

FmySQL_Res :
= mysql_list_tables(FLibHandle, nil);
if FmySQL_Res=nil then
begin
FLastError :
= ERROR_MYSQL_GETALLTABLE;
Exit;
end;

if lpBack = nil then
begin
FLastError :
= ERROR_MYSQL_NULLPOINTER;
Exit;
end;

i :
= 0;
try
repeat
MYSQL_ROW :
= mysql_fetch_row(FmySQL_Res);
if MYSQL_ROW<>nil then
TMySqlDataCallBack(lpBack)(i,MYSQL_ROW^[
0],1,UserData);
Inc(i);
until MYSQL_ROW=nil;
finally
SQL_ResIni();
end;
Result :
= 0;
end;

function TMySql.M_SQL_Init: PAnsiChar;
begin
//加载动态库以及获得客户端版本信息
libmysql_fast_load(
nil);
Result :
= mysql_get_client_info;
Fdb :
= '';
FClientVer :
= Result;
end;

function TMySql.M_SQL_Query(sqlLine: PAnsiChar): LongInt;
begin
Result :
= mysql_send_query(FLibHandle,sqlLine,Length(sqlLine));
if Result <> 0 then
FLastError :
= ERROR_MYSQL_QUERY;
end;

procedure TMySql.SQL_ResIni();
begin
if FmySQL_Res<>nil then
mysql_free_result(FmySQL_Res);
FmySQL_Res :
= nil;
end;

procedure TMySql.SetCharName(const Value: string);
begin
mysql_
set_character_set(FLibHandle,PAnsiChar(Value));
FCharName :
= Value;
end;

function TMySql.M_SQL_ClientCmd(cmd: Integer; names:PAnsiChar; lpBack:Pointer;
UserData:LongInt): LongInt;
begin
Result :
= -1;
case cmd of
SHOWDATABASES: Result :
= SQL_GetAllDataBase(lpBack,UserData); //0 成功
USEDB:
begin
db :
= names;
Result :
= 0;
end;
SHOWTABLES: Result :
= SQL_GetAllTable(names,lpBack,UserData); //0 成功
USECHARNAME:
begin
CharName :
= names;
Result :
= 0;
end;
FIELDCOUNT:
begin
if FmySQL_Res <> nil then
Result :
= mysql_num_fields(FmySQL_Res); //字段总数
end;
ROWCOUNT:
begin
if FmySQL_Res <> nil then
Result :
= mysql_num_rows(FmySQL_Res); //查询的行的总数
end;
end;
end;

procedure TMySql.Setdb(const Value: string);
begin
mysql_select_db(FLibHandle,PAnsiChar(Value));
Fdb :
= Value;
end;

procedure TMySql.M_SQL_Clear;
begin
if libmysql_status=LIBMYSQL_READY then
mysql_close(FLibHandle);
end;

function TMySql.GetLastError: LongInt;
begin
Result :
= FLastError;
end;

procedure TMySql.M_SQL_data_seek(Res: Pointer; nIndex: Integer);
begin
mysql_data_seek(Res, nIndex);
end;

function TMySql.M_SQL_fetch_field(Res: Pointer): Pointer;
begin
Result :
= mysql_fetch_field(Res);
end;

function TMySql.M_SQL_fetch_row(Res: Pointer): Pointer;
begin
Result :
= mysql_fetch_row(Res);
end;

function TMySql.M_SQL_field_name(field: Pointer): PAnsiChar;
begin
Result :
= mysql_field_name(field);
end;

function TMySql.M_SQL_Select_Res(sql: PAnsiChar; Cmd: Byte): Pointer;
begin
Result :
= nil;
if Cmd = 1 then
begin
SQL_ResIni();
Exit;
end;

if mysql_real_query(FLibHandle, sql, Length(sql))<>0 then
begin
FLastError :
= ERROR_MYSQL_QUERY;
Exit;
end;
SQL_ResIni();
FmySQL_Res :
= mysql_store_result(FLibHandle);
Result :
= FmySQL_Res;
end;

end.

然后是DLL文件: MysqlsdkMysqlsdk.dll

 

Mysqlsdk
library Mysqlsdk;
uses
SysUtils,
Classes,
MySqlClass;

{$R *.res}

function SQL_Init(): Pointer; stdcall;
begin
Result :
= Pointer(TMySql.Create);
if Result <> nil then
TMySql(Result).M_SQL_Init();
end;

procedure SQL_Clear(sqllib: Pointer);stdcall;
begin
if sqllib <> nil then
TMySql(sqllib).M_SQL_Clear();
end;

function SQL_LastError(sqllib: Pointer):LongInt;stdcall;
begin
Result :
= -1;
if sqllib <> nil then
Result :
= TMySql(sqllib).GetLastError();
end;

function SQL_Version(sqllib: Pointer; nType: Byte):PAnsiChar;stdcall;
begin
Result :
= PAnsiChar('Version error');
if sqllib <> nil then
begin
if nType = 0 then
Result :
= PAnsiChar(TMySql(sqllib).ClientVer)
else if nType = 1 then
Result :
= PAnsiChar(TMySql(sqllib).SerVer)
else
Result :
= PAnsiChar(TMySql(sqllib).CharName);
end;

end;

function SQL_Connect(sqllib: Pointer;host, user, passwd, db:PAnsiChar; port: LongInt=3306): LongInt;stdcall;
begin
Result :
= -1;
if sqllib <> nil then
begin
if Trim(TMySql(sqllib).M_SQL_Connect(host,user,passwd,db,port)) <> '' then
Result :
= 0;
end;
end;

function SQL_ClientCmd(sqllib: Pointer; cmd:LongInt; names:PAnsiChar;lpBack:Pointer; UserData:LongInt):LongInt;stdcall;
begin
Result :
= -1;
if sqllib <> nil then
Result :
= TMySql(sqllib).M_SQL_ClientCmd(cmd,names,lpBack,UserData);
end;

function SQL_Query(sqllib: Pointer; sqlLine: PAnsiChar):LongInt;stdcall;
begin
Result :
= -1;
if sqllib <> nil then
Result :
= TMySql(sqllib).M_SQL_Query(sqlLine);
end;

function SQL_Select_Res(sqllib: Pointer; sql: PAnsiChar; Cmd:Byte):Pointer;stdcall;
begin
Result :
= nil;
if sqllib <> nil then
Result :
= TMySql(sqllib).M_SQL_Select_Res(sql,Cmd);
end;

function SQL_fetch_field(sqllib: Pointer; Res: Pointer):Pointer;stdcall;
begin
Result :
= nil;
if sqllib <> nil then
Result :
= TMySql(sqllib).M_SQL_fetch_field(Res);
end;

function SQL_field_name(sqllib: Pointer;field: Pointer):PAnsiChar;stdcall;
begin
Result :
= nil;
if sqllib <> nil then
Result :
= TMySql(sqllib).M_SQL_field_name(field);
end;

function SQL_data_seek(sqllib: Pointer; Res: Pointer; nIndex: LongInt):LongInt;stdcall;
begin
Result :
= -1;
if sqllib <> nil then
TMySql(sqllib).M_SQL_data_seek(Res,nIndex);
end;

function SQL_fetch_row(sqllib: Pointer; Res: Pointer):Pointer;stdcall;
begin
Result :
= nil;
if sqllib <> nil then
Result :
= TMySql(sqllib).M_SQL_fetch_row(Res);
end;

exports
SQL_Init name
'SQL_Init',
SQL_Clear name
'SQL_Clear',
SQL_LastError name
'SQL_LastError',
SQL_Version name
'SQL_Version',
SQL_Connect name
'SQL_Connect',
SQL_ClientCmd name
'SQL_ClientCmd',
SQL_Query name
'SQL_Query',
SQL_Select_Res name
'SQL_Select_Res',
SQL_fetch_field name
'SQL_fetch_field',
SQL_field_name name
'SQL_field_name',
SQL_data_seek name
'SQL_data_seek',
SQL_fetch_row name
'SQL_fetch_row';
begin
end.

这样封装之后,不管是delphi还是c++都可以访问了.

delphi下的导出pas;

 

代码
unit Mysqlsdk;

interface
uses
Windows;
const
SDK
= 'Mysqlsdk.dll';
//命令
SHOWDATABASES
= 101;
USEDB
= 102;
SHOWTABLES
= 103;
USECHARNAME
= 104;

FIELDCOUNT
= 105;
ROWCOUNT
= 106;
//错误码
ERROR_MYSQL_NOERROR
= 0; //无错误
ERROR_MYSQL_INIT
= 1; //初始化失败
ERROR_MYSQL_CONNECT
= 2; //连接服务器失败
ERROR_MYSQL_GETALLBASE
= 3; //获取databases失败
ERROR_MYSQL_SELECTDB
= 4; //查询table失败
ERROR_MYSQL_GETALLTABLE
= 5; //获取table失败
ERROR_MYSQL_QUERY
= 6; //执行QUERY失败
ERROR_MYSQL_NULLPOINTER
= 7; //空地址

type
PMYSQL_ROW
= ^TMYSQL_ROW; // return data as array of strings
TMYSQL_ROW
= array[0..MaxInt div SizeOf(PAnsiChar) - 1] of PAnsiChar;

{-------------------------------------------
使用的回调函数的定义
nIndex 序号
DataType 0: 数据库数据 1: 表数据;
UserData: 自定义数据;

TMySqlDataCallBack = procedure(nIndex:Integer; Data1: PAnsiChar; DataType:Byte;
UserData: Cardinal); stdcall;
*********************************************************************************************
--------------------------------------------
}

function SQL_Init(): Pointer; stdcall; external SDK;

procedure SQL_Clear(sqllib: Pointer);stdcall; external SDK;


{-----------------------------------------------------
|SQL_LastError()函数 |
|错误码获取 相关说明在常量里有说明 |
------------------------------------------------------
}
function SQL_LastError(sqllib: Pointer):LongInt;stdcall; external SDK;


{-----------------------------------------------------
|SQL_Version函数 |
|nType 0:客户端版本 1:服务器版本 2:编码类型 |
------------------------------------------------------
}
function SQL_Version(sqllib: Pointer; nType: Byte):PAnsiChar;stdcall; external SDK;


{------------------------------------------------------
|db 可设置为nil,也可以设置为具体的数据库 |
-------------------------------------------------------
}
function SQL_Connect(sqllib: Pointer;host, user, passwd, db:PAnsiChar;
port: LongInt
=3306): LongInt;stdcall; external SDK;


{---------------------------------------------------------------------
|SQL_ClientCmd()函数 |
|cmd | 作用 | names | lpBack | UserData |
|SHOWDATABASES | 显示所有数据库| 无用 | 回调 | 自定义数据 |
|USEDB | 使用数据库 | 数据库名 | 无用 | 无用 |
|SHOWTABLES | 显示所有表 | 数据库名 | 回调 | 自定义数据 |
|USECHARNAME | 设置编码 | 编码名称 | 无用 | 无用 |
| | |
----------------------------------------------------------------------
}
function SQL_ClientCmd(sqllib: Pointer; cmd:LongInt; names:PAnsiChar;
lpBack:Pointer; UserData:LongInt):LongInt;
stdcall; external SDK;

{--------------------------------------------------------------------------------------
|SQL_Query()函数 执行sql语句 |
|sqlLine: sql语句; |
|比如:-----表的创建: create table my(id int(4),memo varchar(200),tt date); |
| -----增: insert into my values(1,"我是中国人,我热爱自己的祖国啊","2009-09-21"); |
| -----删: delete from my where id=2; |
| -----改: update my set memo="看,过来一个美女" where id=1; |
|-----数据库的创建: create database ok; |
|-----数据库的删除: drop database ok; |
| |
|注意: 插入中文的时候 注意设置编码为gbk 或者 gb2312 |
--------------------------------------------------------------------------------------
}
function SQL_Query(sqllib: Pointer; sqlLine: PAnsiChar):LongInt;stdcall; external SDK;

{**************************************************************************************}
function SQL_Select_Res(sqllib: Pointer; sql: PAnsiChar; Cmd:Byte):Pointer;stdcall;external SDK;

function SQL_fetch_field(sqllib: Pointer; Res: Pointer):Pointer;stdcall;external SDK;

function SQL_field_name(sqllib: Pointer;field: Pointer):PAnsiChar;stdcall;external SDK;

function SQL_data_seek(sqllib: Pointer; Res: Pointer; nIndex: LongInt):LongInt;stdcall;external SDK;

function SQL_fetch_row(sqllib: Pointer; Res: Pointer):Pointer;stdcall;external SDK;

{***************************************************************************************}
implementation

end.

delphi demo:

 

代码
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Mysqlsdk, ComCtrls, Buttons;

type
TForm1
= class(TForm)
btn2: TButton;
ListView1: TListView;
edt1: TEdit;
edt2: TEdit;
edt3: TEdit;
edt4: TEdit;
Lbl1: TLabel;
Lbl2: TLabel;
Lbl3: TLabel;
Lbl4: TLabel;
btn4: TButton;
Lbl5: TLabel;
Lbl6: TLabel;
Lbl7: TLabel;
Lbl8: TLabel;
Lbl9: TLabel;
Lbl10: TLabel;
lst1: TListBox;
lst2: TListBox;
Lbl11: TLabel;
Lbl12: TLabel;
edt5: TEdit;
btn1: TButton;
cbb1: TComboBox;
Lbl13: TLabel;
edt6: TEdit;
btn3: TButton;
btn6: TSpeedButton;
btn7: TSpeedButton;
btn8: TSpeedButton;
btn9: TSpeedButton;
btn10: TSpeedButton;
Lbl14: TLabel;
btn11: TButton;
btn12: TButton;
Lbl15: TLabel;
Lbl16: TLabel;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure btn4Click(Sender: TObject);
procedure btn2Click(Sender: TObject);
procedure lst1Click(Sender: TObject);
procedure lst2Click(Sender: TObject);
procedure btn1Click(Sender: TObject);
procedure btn3Click(Sender: TObject);
procedure btn6Click(Sender: TObject);
procedure btn11Click(Sender: TObject);
procedure cbb1Change(Sender: TObject);
procedure btn12Click(Sender: TObject);
private
{ Private declarations }
Fmysql: Pointer;
FRes: Pointer;
public
function GetResult(lv: TListView; sqlLine: string): Integer;
{ Public declarations }
end;


var
Form1: TForm1;
procedure bbb(nIndex:Integer; Data1: PAnsiChar; DataType:Byte;
UserData: Cardinal);
stdcall;
implementation

{$R *.dfm}
procedure bbb(nIndex:Integer; Data1: PAnsiChar; DataType:Byte;
UserData: Cardinal);
begin
if DataType = 0 then
begin
TForm1(UserData).lst1.Items.Add(Data1);
end else
begin
TForm1(UserData).lst2.Items.Add(Data1);
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Fmysql :
= SQL_Init();
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
SQL_Clear(Fmysql);
end;

procedure TForm1.btn4Click(Sender: TObject);
begin
if SQL_Connect(Fmysql,PAnsiChar(edt1.Text),PAnsiChar(edt2.Text),PAnsiChar(edt3.Text),
PAnsiChar(edt4.Text))
<> -1 then
begin
Lbl8.Caption :
= SQL_Version(Fmysql,0);
Lbl9.Caption :
= SQL_Version(Fmysql,1);
Lbl10.Caption :
= SQL_Version(Fmysql,2);
end else
Lbl16.Caption :
= IntToStr(SQL_LastError(Fmysql));
end;

procedure TForm1.btn2Click(Sender: TObject);
begin
lst1.Clear;
SQL_ClientCmd(Fmysql,SHOWDATABASES,
nil,@bbb,DWORD(Self));
end;

procedure TForm1.lst1Click(Sender: TObject);
begin
lst2.Clear();
SQL_ClientCmd(Fmysql,SHOWTABLES,PAnsiChar(lst1.Items[lst1.ItemIndex]),@bbb,DWORD(Self));
end;

procedure TForm1.lst2Click(Sender: TObject);
var
sql:
string;
nCount: Integer;
begin
sql :
= 'select * from ' + lst2.Items[lst2.ItemIndex];
nCount :
= GetResult(ListView1,sql);
Lbl12.Caption :
= IntToStr(nCount);
end;

procedure TForm1.btn1Click(Sender: TObject);
begin
SQL_Query(Fmysql,PAnsiChar(edt5.text));
end;

procedure TForm1.btn3Click(Sender: TObject);
begin
SQL_ClientCmd(Fmysql,USEDB,PAnsiChar(edt6.Text),
nil,0);
end;

procedure TForm1.btn6Click(Sender: TObject);
begin
edt5.Text :
= edt5.Text + TSpeedButton(Sender).Caption;
end;

procedure TForm1.btn11Click(Sender: TObject);
begin
edt5.Text :
= '';
end;

procedure TForm1.cbb1Change(Sender: TObject);
begin
SQL_ClientCmd(Fmysql,USECHARNAME,PAnsiChar(cbb1.Text),
nil,0);
Lbl10.Caption :
= SQL_Version(Fmysql,2);
end;

procedure TForm1.btn12Click(Sender: TObject);
var
sql:
string;
nCount: Integer;
begin
sql :
= edt5.Text;
nCount :
= GetResult(ListView1,sql);
Lbl12.Caption :
= IntToStr(nCount);
end;

function TForm1.GetResult(lv: TListView; sqlLine: string): Integer;
var
mySQL_Field: Pointer;
i, row, Field, j: Integer;
MYSQL_ROW: PMYSQL_ROW;
begin
lv.Clear;
lv.Columns.Clear;
Result :
= -1;
//开始查找
FRes :
= SQL_Select_Res(Fmysql,PAnsiChar(sqlLine),0);
if FRes <> nil then
begin
//字段数
Field :
= SQL_ClientCmd(Fmysql,FIELDCOUNT,nil,nil,0);
//结果行数
row :
= SQL_ClientCmd(Fmysql,ROWCOUNT,nil,nil,0);
Result :
= row;

//得到字段名称
for i := 0 to Field-1 do
begin
mySQL_Field :
= SQL_fetch_field(Fmysql,FRes);
if mySQL_Field<>nil then
begin
lv.Columns.Add.Caption :
= SQL_field_name(Fmysql,mySQL_Field);
end;
end;

//取得结果集
i :
= 0;
while i< row do
begin
SQL_data_seek(Fmysql,FRes, i);
MYSQL_ROW :
= PMYSQL_ROW(SQL_fetch_row(Fmysql,FRes));
if MYSQL_ROW <> nil then
begin
with lv.Items.Add do
begin
Caption :
= MYSQL_ROW^[0];
for j := 1 to Field-1 do
begin
SubItems.Add(MYSQL_ROW^[j]);
end;
end;
end;
Inc(i);
end;
//释放结果集
SQL_Select_Res(Fmysql,
'',1);
end;
end;

end.

窗体文件:

 

代码
object Form1: TForm1
Left
= 357
Top
= 159
Width
= 740
Height
= 616
Caption
= 'Form1'
Color
= clBtnFace
Font.Charset
= GB2312_CHARSET
Font.Color
= clWindowText
Font.Height
= -13
Font.Name
= '宋体'
Font.Style
= []
OldCreateOrder
= False
OnCreate
= FormCreate
OnDestroy
= FormDestroy
PixelsPerInch
= 96
TextHeight
= 13
object Lbl1: TLabel
Left
= 24
Top
= 19
Width
= 39
Height
= 13
Caption
= '服务器'
end
object Lbl2: TLabel
Left
= 24
Top
= 61
Width
= 39
Height
= 13
Caption
= '用户名'
end
object Lbl3: TLabel
Left
= 23
Top
= 103
Width
= 40
Height
= 13
Caption
= '密 码'
end
object Lbl4: TLabel
Left
= 23
Top
= 140
Width
= 39
Height
= 13
Caption
= '数据库'
end
object Lbl5: TLabel
Left
= 240
Top
= 16
Width
= 65
Height
= 13
Caption
= '服务器版本'
end
object Lbl6: TLabel
Left
= 240
Top
= 48
Width
= 65
Height
= 13
Caption
= '客户端版本'
end
object Lbl7: TLabel
Left
= 240
Top
= 77
Width
= 52
Height
= 13
Caption
= '使用语言'
end
object Lbl8: TLabel
Left
= 320
Top
= 16
Width
= 7
Height
= 13
end
object Lbl9: TLabel
Left
= 320
Top
= 48
Width
= 7
Height
= 13
end
object Lbl10: TLabel
Left
= 320
Top
= 80
Width
= 7
Height
= 13
end
object Lbl11: TLabel
Left
= 344
Top
= 144
Width
= 52
Height
= 13
Caption
= '查询结果'
end
object Lbl12: TLabel
Left
= 400
Top
= 144
Width
= 7
Height
= 13
end
object Lbl13: TLabel
Left
= 24
Top
= 240
Width
= 52
Height
= 13
Caption
= '设置编码'
end
object btn6: TSpeedButton
Left
= 134
Top
= 174
Width
= 49
Height
= 22
Caption
= 'create'
Flat
= True
OnClick
= btn6Click
end
object btn7: TSpeedButton
Left
= 190
Top
= 174
Width
= 57
Height
= 22
Caption
= 'insert'
Flat
= True
OnClick
= btn6Click
end
object btn8: TSpeedButton
Left
= 254
Top
= 174
Width
= 65
Height
= 22
Caption
= 'update'
Flat
= True
OnClick
= btn6Click
end
object btn9: TSpeedButton
Left
= 326
Top
= 174
Width
= 65
Height
= 22
Caption
= 'drop'
Flat
= True
OnClick
= btn6Click
end
object btn10: TSpeedButton
Left
= 398
Top
= 174
Width
= 49
Height
= 22
Caption
= 'rename'
Flat
= True
OnClick
= btn6Click
end
object Lbl14: TLabel
Left
= 32
Top
= 179
Width
= 91
Height
= 13
Caption
= '点击使用关键字'
end
object Lbl15: TLabel
Left
= 240
Top
= 104
Width
= 39
Height
= 13
Caption
= '错误码'
end
object Lbl16: TLabel
Left
= 320
Top
= 104
Width
= 7
Height
= 13
end
object btn2: TButton
Left
= 392
Top
= 72
Width
= 75
Height
= 25
Caption
= '查询数据库'
TabOrder
= 0
OnClick
= btn2Click
end
object ListView1: TListView
Left
= 8
Top
= 316
Width
= 465
Height
= 249
Columns
= <>
GridLines
= True
TabOrder
= 1
ViewStyle
= vsReport
end
object edt1: TEdit
Left
= 80
Top
= 16
Width
= 121
Height
= 21
TabOrder
= 2
Text
= 'localhost'
end
object edt2: TEdit
Left
= 80
Top
= 56
Width
= 121
Height
= 21
TabOrder
= 3
Text
= 'root'
end
object edt3: TEdit
Left
= 80
Top
= 96
Width
= 121
Height
= 21
PasswordChar
= '*'
TabOrder
= 4
Text
= 'root'
end
object edt4: TEdit
Left
= 80
Top
= 136
Width
= 121
Height
= 21
TabOrder
= 5
end
object btn4: TButton
Left
= 232
Top
= 136
Width
= 75
Height
= 25
Caption
= '连接'
TabOrder
= 6
OnClick
= btn4Click
end
object lst1: TListBox
Left
= 488
Top
= 8
Width
= 233
Height
= 161
ItemHeight
= 13
TabOrder
= 7
OnClick
= lst1Click
end
object lst2: TListBox
Left
= 488
Top
= 184
Width
= 233
Height
= 393
ItemHeight
= 13
TabOrder
= 8
OnClick
= lst2Click
end
object edt5: TEdit
Left
= 24
Top
= 204
Width
= 425
Height
= 21
TabOrder
= 9
end
object btn1: TButton
Left
= 256
Top
= 233
Width
= 97
Height
= 25
Caption
= '执行SQL语句'
TabOrder
= 10
OnClick
= btn1Click
end
object cbb1: TComboBox
Left
= 80
Top
= 236
Width
= 121
Height
= 21
ItemHeight
= 13
ItemIndex
= 0
TabOrder
= 11
Text
= 'latin1'
OnChange
= cbb1Change
Items.Strings
= (
'latin1'
'latin2'
'utf8'
'gb2312'
'gbk')
end
object edt6: TEdit
Left
= 24
Top
= 284
Width
= 81
Height
= 21
TabOrder
= 12
end
object btn3: TButton
Left
= 120
Top
= 284
Width
= 75
Height
= 25
Caption
= '使用数据库'
TabOrder
= 13
OnClick
= btn3Click
end
object btn11: TButton
Left
= 368
Top
= 232
Width
= 75
Height
= 25
Caption
= '清空语句'
TabOrder
= 14
OnClick
= btn11Click
end
object btn12: TButton
Left
= 352
Top
= 280
Width
= 97
Height
= 25
Caption
= '复杂搜索'
TabOrder
= 15
OnClick
= btn12Click
end
end

 

posted @ 2010-01-05 23:08  小阿枫  阅读(1387)  评论(2编辑  收藏  举报