说明:代码都是工程里拷贝出来的,一定好用,但可能引用了无用的单元。不追求效率,能完成就可以。其它连接数据库的控件,修改一下就可以。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.

六、界面截图

七、数据库截图

八、小技巧

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

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

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

作者:以后换名字

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

delphi ado 连接mysql_DELPHI ADO连接数据库相关推荐

  1. delphi xe 连接mysql_DELPHI XE MYSQL数据库操作类 MYSQLHELPER

    注: 无需odbc配置 {* *                         MySQL Helper v1.0 *                            2015.6.19 * ...

  2. mysql数据库连接ado_mysql:2种连接数据库方式:ADO连接、mysql的API连接 | 学步园...

    一.创建数据库.创建表.插入数据 >show databases; >create database mydb; >user mydb; >create table mytab ...

  3. Delphi(Tuxedo,BDE,ADO)三合一数据集组件HsTxQuery

    Delphi(Tuxedo,BDE,ADO)三合一数据集组件HsTxQuery 一.背景 为什么要做这个三合一数据集组件呢?曾经我们公司用delphi开发的系统大多以ADO,BDE方式来连接数据库,这 ...

  4. VC++使用ADO连接SQL Server数据库

    基本步骤: 1.创建一个基于对话框的应用程序ADODatabase. 2.创建一个用来连接的ADO类库.系统菜单中Insert->New Class项,class type选择Generic C ...

  5. ADO连接ACCESS数据库

    使用ADOX,需要引入ADOX的动态链接库msadox.dll,首先在stdafx.h中加入如下语句: #import "c:/program files/common files/syst ...

  6. C++连接mysql的两种方式(ADO连接和mysql api连接)

    一.ADO连接mysql 1.安装mysql-5.5.20-win32.msi和mysql-connector-odbc-5.3.4-win32.msi(一般两个安装程序要匹配,否则可能连接不上)   ...

  7. 自己如何获取ADO连接字符串

    自己如何获取ADO连接字符串 摘自:http://blog.csdn.net/zyq5945/article/details/5586423 有时候我们参考网上的ADO连接字符串写未必就能连接上数据库 ...

  8. ADO连接各种数据库

    通过ADO连接各种数据库的字符串集 海南省信息服务中心  温大文 在网络编程过程中,ADO(Activex Data Object)编程往往是不可少的工作,特别是开发电子商务网站.既然讲到ADO数据对 ...

  9. udl 连mysql_自己如何正确获取MYSQL的ADO连接字符串

    1.在桌面上新建一个空的文本文件mysql.txt,重命名为mysql.udl: 2.双击这个mysql.udl文件,打开"数据库连接属性"对话框,在"提供程序" ...

最新文章

  1. springcloud gateway ribbon使用_Github点赞接近 70k 的Spring Cloud学习教程+实战项目推荐!牛批!...
  2. html页面跨域提交数据,前端跨域的整理
  3. GUI为什么不设计为多线程?
  4. PyTorch:距离度量
  5. node npm 更新到最新(Ubuntu系统)
  6. 华为交换机抓包上传至PC分析
  7. 数学 二维向量(加法、减法、模、点乘、叉乘)
  8. 边缘计算资源分配与任务调度优化综述
  9. python输入球的半径计算球的表面积和体积_球扇形(球心角体)体积,表面积计算公式与在线计算器_三贝计算网_23bei.com...
  10. 开发时几种常见的建模工具
  11. php 取字符串任意两个的中间部分,掐头去尾
  12. inventor如何钣金出弧面_Inventor钣金设计教程
  13. fastadmin-addons使用
  14. 【教程】扫描识别工具Dynamic Web TWAIN使用教程:条码读取器(上)
  15. Windows10连接蓝牙耳机不能用耳机本身麦克风的解决办法
  16. 小程序-滑块+iconfont下载本地使用
  17. 2023 年你还用 QQ 吗?
  18. 洛谷—— P1536 村村通
  19. A-Tune安装方法(两种)从安装openEuler开始
  20. 设置input只能输入数字或小数(保留一位小数)

热门文章

  1. 1-3分钟教你如何开通微信支付0.2%费率,适用于公众号小程序和收款码
  2. 《自然语言处理入门》笔记
  3. Parsing error: No Babel config file detected for xxx Either disable config file checking with requir
  4. 两条华子也换不来的数据湖讲解
  5. Redis学习记录(一)
  6. python封装vba_VBA类模块封装
  7. MagicBook屏幕频闪解决方案(Windows、MacOS)
  8. 十秒钟入门一分钟搭建Discuz论坛
  9. 解决win10系统无法通过usb共享手机网络
  10. 百度 oppo 滴滴出行 面试问题总结 阿里