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.
六、界面截图
七、数据库截图
八、小技巧
1、EDIT中的PASSWORDCHAR属性写上个*号,就是密码隐藏
2、COMBOBOX的STYLE属性选择csDropDownList,只能选择,不能写,如果要默认哪个值就修改ITEMindex
---------------------
作者:以后换名字
原文:https://blog.csdn.net/weixin_44387646/article/details/87355469
delphi ado 连接mysql_DELPHI ADO连接数据库相关推荐
- delphi xe 连接mysql_DELPHI XE MYSQL数据库操作类 MYSQLHELPER
注: 无需odbc配置 {* * MySQL Helper v1.0 * 2015.6.19 * ...
- mysql数据库连接ado_mysql:2种连接数据库方式:ADO连接、mysql的API连接 | 学步园...
一.创建数据库.创建表.插入数据 >show databases; >create database mydb; >user mydb; >create table mytab ...
- Delphi(Tuxedo,BDE,ADO)三合一数据集组件HsTxQuery
Delphi(Tuxedo,BDE,ADO)三合一数据集组件HsTxQuery 一.背景 为什么要做这个三合一数据集组件呢?曾经我们公司用delphi开发的系统大多以ADO,BDE方式来连接数据库,这 ...
- VC++使用ADO连接SQL Server数据库
基本步骤: 1.创建一个基于对话框的应用程序ADODatabase. 2.创建一个用来连接的ADO类库.系统菜单中Insert->New Class项,class type选择Generic C ...
- ADO连接ACCESS数据库
使用ADOX,需要引入ADOX的动态链接库msadox.dll,首先在stdafx.h中加入如下语句: #import "c:/program files/common files/syst ...
- C++连接mysql的两种方式(ADO连接和mysql api连接)
一.ADO连接mysql 1.安装mysql-5.5.20-win32.msi和mysql-connector-odbc-5.3.4-win32.msi(一般两个安装程序要匹配,否则可能连接不上) ...
- 自己如何获取ADO连接字符串
自己如何获取ADO连接字符串 摘自:http://blog.csdn.net/zyq5945/article/details/5586423 有时候我们参考网上的ADO连接字符串写未必就能连接上数据库 ...
- ADO连接各种数据库
通过ADO连接各种数据库的字符串集 海南省信息服务中心 温大文 在网络编程过程中,ADO(Activex Data Object)编程往往是不可少的工作,特别是开发电子商务网站.既然讲到ADO数据对 ...
- udl 连mysql_自己如何正确获取MYSQL的ADO连接字符串
1.在桌面上新建一个空的文本文件mysql.txt,重命名为mysql.udl: 2.双击这个mysql.udl文件,打开"数据库连接属性"对话框,在"提供程序" ...
最新文章
- springcloud gateway ribbon使用_Github点赞接近 70k 的Spring Cloud学习教程+实战项目推荐!牛批!...
- html页面跨域提交数据,前端跨域的整理
- GUI为什么不设计为多线程?
- PyTorch:距离度量
- node npm 更新到最新(Ubuntu系统)
- 华为交换机抓包上传至PC分析
- 数学 二维向量(加法、减法、模、点乘、叉乘)
- 边缘计算资源分配与任务调度优化综述
- python输入球的半径计算球的表面积和体积_球扇形(球心角体)体积,表面积计算公式与在线计算器_三贝计算网_23bei.com...
- 开发时几种常见的建模工具
- php 取字符串任意两个的中间部分,掐头去尾
- inventor如何钣金出弧面_Inventor钣金设计教程
- fastadmin-addons使用
- 【教程】扫描识别工具Dynamic Web TWAIN使用教程:条码读取器(上)
- Windows10连接蓝牙耳机不能用耳机本身麦克风的解决办法
- 小程序-滑块+iconfont下载本地使用
- 2023 年你还用 QQ 吗?
- 洛谷—— P1536 村村通
- A-Tune安装方法(两种)从安装openEuler开始
- 设置input只能输入数字或小数(保留一位小数)
热门文章
- 1-3分钟教你如何开通微信支付0.2%费率,适用于公众号小程序和收款码
- 《自然语言处理入门》笔记
- Parsing error: No Babel config file detected for xxx Either disable config file checking with requir
- 两条华子也换不来的数据湖讲解
- Redis学习记录(一)
- python封装vba_VBA类模块封装
- MagicBook屏幕频闪解决方案(Windows、MacOS)
- 十秒钟入门一分钟搭建Discuz论坛
- 解决win10系统无法通过usb共享手机网络
- 百度 oppo 滴滴出行 面试问题总结 阿里