delphi ado 连接mysql_DELPHI ADO连接数据库

说明:代码都是工程里拷贝出来的,一定好用,但可能引用了无用的单元。不追求效率,能完成就可以。其它连接数据库的控件,修改一下就可以。ANDROID上连接SQLITE用的TFDConnection这个控件,也可以写成这样的方式。

一、新建立一个TDataModule单元(个人理解,就是没有界面,方便管理)

二、放一个TADOConnection控件

三、上代码(这个是连接ACCESS的)

unit data_mouble;

interface

uses

Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,

Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Data.DB, Data.Win.ADODB;

type

TDataModule1 = class(TDataModule)

con_DB: TADOConnection;

procedure DataModuleCreate(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

DataModule1: TDataModule1;

implementation

{%CLASSGROUP 'Vcl.Controls.TControl'}

{$R *.dfm}

procedure TDataModule1.DataModuleCreate(Sender: TObject);

var

condbstr: string;

begin

try

condbstr := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db1.mdb;Persist Security Info=False';

con_DB.ConnectionString := condbstr;

con_DB.LoginPrompt := False;

con_DB.Connected := true;

except

Application.MessageBox('网络数据库连接失败,请检测网络!', '提示信息', MB_OK + MB_ICONINFORMATION);

ExitProcess(0);

end;

end;

end.

四、新建一个空白单元(用来保存操作数据库的小函数)

unit fun_data;

{************************************************************}

{                                                            }

{           模块名称:数据库操作函数模块                                }

{                                                            }

{           技术支持:                                       }

{                                                            }

{                                                            }

{************************************************************}

interface

uses ADODB, Windows, ComCtrls, SysUtils,

Math,data_mouble,System.Classes,Data.DB;

function DB_CheckEmpty(TabName: string): Boolean;

function DB_ExecSql(Str_Sql: string): Boolean;

function DB_SelectRecord(Str_Sql: string): TADOQuery;

function DB_insert_photo(Str_Sql: string;ms:TMemoryStream;file_name:string): Boolean;

implementation

{-------------------------------------------------------------------------------

函数描述:  返回一个数据集

过程名:    DB_SelectRecord

作者:      fkwbllby

日期:      2010.10.16

参数:      Str_Sql:string

返回值:    TADOQuery

-------------------------------------------------------------------------------}

function DB_SelectRecord(Str_Sql: string): TADOQuery;

var Ret: TADOQuery;

begin

try

Ret := TADOQuery.Create(nil);

Ret.Connection := data_mouble.DataModule1.con_DB;

Ret.Close;

Ret.SQL.Clear;

Ret.SQL.Add(Str_Sql);

Ret.Open;

DB_SelectRecord := Ret;

except

DB_SelectRecord := nil;

Exit;

end;

end;

function DB_CheckEmpty(TabName: string): Boolean;

var str: string;

qry_temp: TADOQuery;

begin

try

str := 'SELECT * FROM ' + TabName;

qry_temp := DB_SelectRecord(str);

if qry_temp.IsEmpty then

Result := False

else

Result := True;

qry_temp.Free;

except

Result := False;

Exit;

end;

end;

{-------------------------------------------------------------------------------

函数描述:  执行SQL语句

过程名:    DB_ExecSql

作者:      fkwbllby

日期:      2010.10.16

参数:      Str_Sql:string

返回值:    Boolean

-------------------------------------------------------------------------------}

function DB_ExecSql(Str_Sql: string): Boolean;

var

qry: TADOQuery;

begin

try

qry := TADOQuery.Create(nil);

qry.Connection := data_mouble.DataModule1.con_DB;

qry.Close;

qry.SQL.Clear;

qry.SQL.Add(Str_Sql);

qry.ExecSQL;

Result := True;

qry.Free;

except

Result := False

end;

end;

{-------------------------------------------------------------------------------

函数描述:  插入SQL语句(带一张图片)

过程名:    DB_insert_photo

作者:      fkwbllby

日期:      2010.10.16

参数:      Str_Sql:string(SQL字符串前半部分)ms:TMemoryStream(图片内存流)file_name:string(图片字段名)

返回值:    Boolean

-------------------------------------------------------------------------------}

function DB_insert_photo(Str_Sql: string;ms:TMemoryStream;file_name:string): Boolean;

var

qry: TADOQuery;

begin

try

qry := TADOQuery.Create(nil);

qry.Connection := data_mouble.DataModule1.con_DB;

qry.Close;

qry.SQL.Clear;

qry.SQL.Add(Str_Sql);

qry.Parameters.ParamByName(file_name).LoadFromStream(ms,ftBlob);

qry.ExecSQL;

Result := True;

qry.Free;

except

Result := False

end;

end;

end.

五、调用代码未例

unit login;

interface

uses

Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,

System.Classes, Vcl.Graphics,

Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Data.DB, Data.Win.ADODB,

fun_data, Vcl.Buttons, Vcl.Imaging.pngimage, Vcl.ExtCtrls;

type

TForm1 = class(TForm)

Label1: TLabel;

Label2: TLabel;

Button1: TButton;

Button2: TButton;

Edit2: TEdit;

ComboBox1: TComboBox;

Image1: TImage;

procedure Button2Click(Sender: TObject);

procedure FormShow(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

uses main_all;

procedure TForm1.Button1Click(Sender: TObject);

var

sqltemp: string;

qrytemp: TADOQuery;

begin

if (ComboBox1.Text = '') or (Edit2.Text = '') then

begin

MessageBox(0, '用户名或密码不能为空', '提示', MB_TASKMODAL);

end

else

begin

sqltemp := 'select  * from login_user where username=' + char(39) +

ComboBox1.Text + char(39) + ' and userpass=' + char(39) + Edit2.Text

+ char(39);

qrytemp := DB_SelectRecord(sqltemp);

if not qrytemp.Eof then

begin

// Form2.ShowModal;

MessageBox(0, '登录成功', '提示', MB_TASKMODAL);

// 需要----格式化权限

user_modi := '0';

Placing_area_modi := '0';

Basic_equipment_modi := '0';

Device_mess_modi := '0';

now_username := ComboBox1.Text;

user_modi := copy(qrytemp.fieldByname('quanxian').AsString, 1, 1);

Placing_area_modi := copy(qrytemp.fieldByname('quanxian').AsString, 2, 1);

Basic_equipment_modi :=

copy(qrytemp.fieldByname('quanxian').AsString, 3, 1);

Device_mess_modi := copy(qrytemp.fieldByname('quanxian').AsString, 4, 1);

if Placing_area_modi = '0' then

begin

form2.is_del.Enabled := false;

form2.is_modi.Enabled := false;

end;

Form1.hide;

form2.Show;

end

else

begin

MessageBox(0, '请检查用户名和密码是否正确', '提示', MB_TASKMODAL);

Edit2.Text := '';

end

end;

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

if MessageBox(Handle, PChar('        是否退出'), PChar('提示'), MB_YESNO) = 6 then

begin

application.Terminate;

end;

end;

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);

begin

if MessageBox(Handle, PChar('        是否退出'), PChar('提示'), MB_YESNO) = 6 then

begin

application.Terminate;

end

else

begin

CanClose := false;

end;

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

// setwindowlong(Form1.Handle, gwl_style, getwindowlong(Handle, gwl_style) and not ws_caption);

// height := clientheight; // 隐藏标题栏

end;

procedure TForm1.FormShow(Sender: TObject);

var

sqltemp: string;

qrytemp: TADOQuery;

begin

// 取login_user中的username 放入

sqltemp := 'SELECT * FROM login_user';

// 'select * from mess where name=' + char(39) + ListView2.Items.Item[n].Caption + char(39) + ' and type=' + chr(39) + ListView2.Items.Item[n].SubItems[0] + chr(39);

qrytemp := DB_SelectRecord(sqltemp);

ComboBox1.Clear;

if not qrytemp.Eof then

begin

while not qrytemp.Eof do

begin

ComboBox1.Items.Add(qrytemp.fieldByname('username').AsString);

qrytemp.Next;

end;

combobox1.ItemIndex:=0;

end

else

begin

end;

end;

end.

六、界面截图

9681930f39a3a41237e59e8fff8afe9d.png

七、数据库截图

c37b32dadb1d8aa404133f09b84a28d7.png

4298b81f846e79d0e7ce2faeeb75de90.png

八、小技巧

1、EDIT中的PASSWORDCHAR属性写上个*号,就是密码隐藏

2、COMBOBOX的STYLE属性选择csDropDownList,只能选择,不能写,如果要默认哪个值就修改ITEMindex

---------------------

作者:以后换名字

原文:https://blog.csdn.net/weixin_44387646/article/details/87355469

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值