Delphi7 & SqlServer实现数据的CRUD(一)

一.感慨
好久好久都没有写博客了,没有android 项目练手,一直在这段空闲的时间里面学习数据结构,还有android 源码和设计模式。虽然很枯燥,但是从书中得到的有些东西确实让我收获不少。坚持每天看两个小时的书,我相信我的目标总有一天会实现的。
最近公司leader分我一个任务,那就是学习Delphi。从来没有接触过这门语言,于是开始正常的百度,google。有这么一句话让我开始喜欢这门语言了“真正的程序员用c++,聪明的程序员用Delphi”。所以我有点很不意思的对号入座了,因为Delphi是面向对象的,所以更加感兴趣了。

二.Delphi简介
Delphi,最早的版本由美国Borland(宝兰)公司于1995年开发。Delphi是一个集成开发环境(IDE),使用的核心是由传统Pascal语言发展而来的Object Pascal,以图形用户界面为开发环境,透过IDE、VCL工具与编译器,配合连结数据库的功能,构成一个以面向对象程序设计为中心的应用程序开发工具。
而现在RAD Studio则是移动APP开发一个很好用的开发工具。

三.ADO整体图
ADO(ActiveX Data Objects)一种程序对象,用于表示用户数据库中的数据结构和所包含的数据。在Microsoft Visual Basic编辑器中,可以使用ADO对象以及ADO的附加组件(称为Microsoft ADO Extensions for DLL and Security(ADOX))来创建或修改表和查询、检验数据库、或者访问外部数据源。还可在代码中使用ADO来操作数据库中的数据,下面是ADO的整体框架图
这里写图片描述

四.Delphi控件
可能现在对这个图很迷茫,不用急,下面我们来仔细分析Delphi的这些ADO相关控件。大体逻辑是ADOConnection与数据库建立连接,ADOQuery利用SQL语句在ADOConnection与数据库建立连接的情况下执行CRUD,然后得到的数据集合用DataSource封装起来,之后让DBGrid在图像化界面上展示出来,这样的话相信大家应该就很容易理解了。

1.TADOConnection 控件
TADOConnection 控件对象的属性及其说明 属性 说明
Attributes
指定自动事务处理的方式。可以指定在提交后启动新事务,或是在回 滚后,或者两者皆可,对应有两个选项:xaCommitRetaining 和 saAbortRetaining
CommandTimeout
指向 Command 对象操作的时间限制,如果超过,就取消命令,单位 是秒,默认值为 30 Connected 连接状态,设为 True 则打开连接,否则连接处于关闭状态
ConnectionString
取值为连接字符串,储存的是数据库连接信息,包括服务器的位置、 所连接数据库的名字以及登录数据库的方式等重要信息
ConnectionTimeout
连接的时间限制,连接时间超过该属性值就停止。单位是秒,默认值 是 15 ConnectOptions 确定连接是同步还是异步(coAsyncConnect) ,默认为同步
CursorLocation
使用的是客户端游标(选项为 UseClient)还是服务器端的游标(选 项为 clUseServercl) ,默认值为客户端的游标(UseClient)
DefaultDatabase
指定一个默认的数据库,如果 ConnectionString 没有指定数据库,或 是无法连接,那么就会指向该数据库。该属性的值是变换的,如果连 接成功后,就会改变为 ConnectionString 指定的数据库
属性 说明 IsolationLevel 确定事务的隔离级别
KeepConnection
如果没有数据集连接到数据库,是否仍然保留连接,True 为保留连 接,默认值为 True
LoginPrompt
确定连接时是否出现登录数据库的对话框,默认情况下是 True,表 示在连接数据库时要输入登录数据库的账号才能连接上 Mode 指定可用于连接的权限 Name 该 TADOConnection 控件创建的对象名称 Provider 确定 ADO 连接的提供者

其中最重要的就是ConnectionString,它是指定数据库的连接路径,我用的是Sql server 2012
这里写图片描述

2.TADOQuery 空间
TADOQuery 控件用来在底层的 ADO 数据源中应用 SQL 语言。使用该控件可以访问多个表。 使用 SELECT 语句从 ADO 数据源的数据表中读取数据。在 ADO 数据源的数据表或其他源数据对象中执行 INSERT、DELETE、UPDATE、ALTER TABLE 以及 CREATE TABLE 等操作。
TADOQuery 对象的属性值
这里写图片描述
TADOQuery 控件的属性及其说明
DataSource
确定一个数据源,该数据源的字段值可作为一个 TADOQuery 控件执 行 SQL 语句时的同名参数的取值 RowsAffected
返回最近一次执行查询操作所影响的行数
SQL
要执行的 SQL 命令内容
TADOQuery 控件的事件及其说明与 TADODataSet 控件的事件说明一样,有关 TADOQuery 控件的方法及其说明如下所示。
Delphi + SQL Server 数据库应用系统开发与实例
Close : 关闭数据集
Create : 创建 TADOQuery 控件的实例 Destroy 析构 TADOQuery 控件的实例
ExecSQL : 进行 ADO 查询操作而执行的 SQL 语句,不过 SELECT 语句不使用 该方法,而是使用 Open 方法或将 Active 属性置为真

其中最重要的就是建立层次链接,最重要的的就是Connection与TADOConnection 建立连接。

3.DataSource控件
DataSource是存储执行SQL语句返回结果的封装对象。
DataSource的属性图
这里写图片描述

DataSet :即把查询结果放置在集合中,进行封装之后放置在DataSource中,其中关联就是通过这个属性值,对应前面查询控件ADOQuery.

4.DBGrid显示控件
DBGrid控件是对数据的展示控件,属性值与前面几乎类型相同同样按照前面的原理和ADO框架图可以知道。这里写图片描述
这里的DataSource要制定前面的DataSource控件,才可以从他身上拿到查询之后封装的结果并展示。

5.整体界面展示
这里写图片描述

6.代码演示
由于我只对数据库进行简单的增加和查询操作,其余的功能原理也差不多。

unit crud;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, ADODB, StdCtrls, Grids, DBGrids;

type
  TForm1 = class(TForm)
    ADOConnection1: TADOConnection;
    ADOQuery1: TADOQuery;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Button1: TButton;
    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
   ADOQuery1.Close;
   ADOQuery1.SQL.Clear;
   ADOQuery1.SQL.Add('insert into user_table  values('''+edit1.Text+''','''+edit2.Text+''','''+edit3.Text+''')');
   //插入操作 SQL 语句
   ADOQuery1.ExecSQL ;   //执行前面的 SQL 语句操作
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
   ADOQuery1.Close;
   ADOQuery1.SQL.Clear;
   ADOQuery1.SQL.Add('select * from user_table');//从员工基本信息表中读出所有记录
   ADOQuery1.Open;
end;

end.

温馨提示:值得注意的是ADOQuery控件对SQL语句的指向有点区别,增删改用ADOQuery1.ExecSQL,而查询要用ADOQuery1.Open;只是一个小区别吧。

博客写的差不多了。下次会接着更深入的研究。

逆风的方向,更适合飞翔!

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值