网络数据库讲稿客户端开发编程讲稿.docx

上传人:b****6 文档编号:7064105 上传时间:2023-01-16 格式:DOCX 页数:12 大小:30.15KB
下载 相关 举报
网络数据库讲稿客户端开发编程讲稿.docx_第1页
第1页 / 共12页
网络数据库讲稿客户端开发编程讲稿.docx_第2页
第2页 / 共12页
网络数据库讲稿客户端开发编程讲稿.docx_第3页
第3页 / 共12页
网络数据库讲稿客户端开发编程讲稿.docx_第4页
第4页 / 共12页
网络数据库讲稿客户端开发编程讲稿.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

网络数据库讲稿客户端开发编程讲稿.docx

《网络数据库讲稿客户端开发编程讲稿.docx》由会员分享,可在线阅读,更多相关《网络数据库讲稿客户端开发编程讲稿.docx(12页珍藏版)》请在冰豆网上搜索。

网络数据库讲稿客户端开发编程讲稿.docx

网络数据库讲稿客户端开发编程讲稿

SQLServer客户端开发与编程

一、引言

1.编程模式:

C/S模式和B/S模式。

2.客户端编程语言:

ASP,VB,VC,VFP,PB,Delphi,Access,ASP,JSP等,都可访问SQL数据库。

3.可访问多种数据库。

二、数据库编程接口

1.ODBC

ODBC(OpenDatabaseConnectivity,开放数据库互连)是微软公司开放服务结构(WOSA,WindowsOpenServicesArchitecture)中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API(应用程序编程接口)。

这些API利用SQL来完成其大部分任务。

ODBC本身也提供了对SQL语言的支持,用户可以直接将SQL语句送给ODBC。

一个基于ODBC的应用程序对数据库的操作不依赖任何DBMS,不直接与DBMS打交道,所有的数据库操作由ODBC驱动程序完成。

也就是说,不论是FoxPro、Access,MYSQL还是Oracle数据库,均可用ODBCAPI进行访问。

由此可见,ODBC的最大优点是能以统一的方式处理所有的数据库。

2.OLEDB

OLEDB(ObjectLinkingandEmbedding,对象连接与嵌入),简称OLE技术;DB(database)。

OLEDB(OLEDB)是微软的战略性的通向不同的数据源的低级应用程序接口。

OLEDB不仅包括ODBC的结构化查询语言(SQL)能力,还具有面向其他非SQL数据类型的通路。

作为微软的组件对象模型(COM)的一种设计,OLEDB是一组读写数据的方法。

3.ADO

ADO(ActiveXDataObjects)是微软公司的一个用于存取数据源的COM组件。

它提供了编程语言和统一数据访问方式OLEDB的一个桥梁。

允许开发人员编写访问数据的代码而不用关心数据库是如何实现的,而只用关心到数据库的连接。

ADO是一种面向对象的编程接口,是一个能够访问不同数据库的统一接口,它在OLEDB中提供了一种“桥”程序,这种程序能够提供对数据库的连接。

 开发人员在使用ADO时,其实就是在使用OLEDB,不过OLEDB更加接近底层。

4.三种接口之间的关系

ODBC是Microsoft引进的一种早期数据库接口技术。

它实际上是ADO的前身。

早期的数据库连接是非常困难的,每个数据库的格式都不一样,开发者得对他们所开发的每种数据库的底层API有深刻的了解,因此,能处理各种各样数据库的通用的API就应运而生了,也就是现在的ODBC(OpenDatabaseConnectivity)。

ODBC是人们在创建通用API的早期产物,有许多种数据库遵从了这种标准,被称为ODBC兼容的数据库。

OLEDB位于ODBC层与应用程序之间。

如果想使用一个ODBC数据源,OLEDB可使用相应的ODBC驱动程序。

如果不需要使用ODBC数据源,那么可以使用相应的OLEDB提供者,这些通常称为本地提供者(nativeprovider)。

使用ODBC提供者意味着需要一个额外的层。

因此,当访问相同的数据时,针对ODBC的OLEDB提供者可能会比本地的OLEDB提供者的速度慢一些。

在一些应用中,例如ASP、Delphi,ADO是位于OLEDB之上的“应用程序”。

ADO调用先被送到OLEDB,然后再交由ODBC处理。

附:

1.用odbc连接数据库:

odbc中提供三种dsn,它们的区别很简单:

用户dsn只能用于本用户。

系统dsn和文件dsn的区别只在于连接信息的存放位置不同:

系统dsn存放在odbc储存区里,而文件dsn则放在一个文本文件中。

在asp中使用它们时,写法如下:

(1)sqlserver:

用系统dsn:

connstr="DSN=dsnname;UID=xx;PWD=xxx;DATABASE=dbname"

用文件dsn:

connstr="FILEDSN=xx;UID=xx;PWD=xxx;DATABASE=dbname"

还可以用连接字符串(从而不用再建立dsn):

connstr="DRIVER={SQLSERVER};SERVER=servername;UID=xx;PWD=xxx"

(2)access:

用系统dsn:

connstr="DSN=dsnname"

(或者为:

connstr="DSN=dsnname;UID=xx;PWD=xxx")

用文件dsn:

connstr="FILEDSN=xx"

还可以用连接字符串(从而不用再建立dsn):

connstr="DRIVER={MicrosoftAccessDriver};DBQ=d:

\abc\abc.mdb"

2.用oledb连接数据库:

(1)sqlserver:

connstr="PROVIDER=SQLOLEDB;

DATASOURCE=servername;UID=xx;PWD=xxx;DATABASE=dbname"

(2)access:

connstr="PROVICER=MICROSOFT.JET.OLEDB.4.0;

DATASOURCE=c:

\abc\abc.mdb"

三、常用ADO对象方法和属性

1.Connection对象P214,P220

2.Command对象P214,P227

3.Recordset对象P215,P220

四、用其它语言访问SQL数据库

ASP,VB,VC,VFP,PB,Delphi,Access,ASP,JSP等,都可访问SQL数据库。

以下仅介绍ASP、VFP、Delphi。

五.ASP访问SQL数据库

1.常用ASP内建对象

Request

Response

Application

Session

Server

2.建立访问环境

可使用OLEDB或ODBC。

(1)建立使用OLEDB的访问环境

需要在“程序/管理工具/Internet服务器管理”中,右击“默认Web站点”,再单击“属性”,然后设置“主目录”和“文档”。

(如P218图6.8)

(2)建立使用ODBC数据源的环境

需要在“程序/管理工具/数据源(ODBC)”中配置,在DNS配置框中选“使用用户输入登录ID和密码的SQLServer验证”。

P213

3.连接到数据源P214

在ASP中引用ADO对象,要加前缀ADODB。

(1)创建一个ADOConnection对象。

例如:

Setcn=Server.CreateObject(“ADODB.Connection”)

(2)连接到数据源

①使用OLEDB接口

首先指定OLDDB提供者

例:

cn.Provider=”sqloledb”

再连接到数据源

例:

cn.Open“Server=zyxy;Database=教学管理;uid=sa;pwd=’’”

②使用ODBC数据源

例:

cn.Open“dsn=jxgl;uid=sa;pwd=’’”‘jxgl是2

(2)中建立的数据源

4.执行访问数据源的命令并创建结果集对象

例:

setrs=cn.Execute(“select*from学生where性别=’男’”)

5.关闭连接

例:

rs.close

cn.close

6.应用举例

例6.1P221

用cn.Excute创建的Recordset对象,在结果集中只能用MoveNext逐步向尾部单方向移动记录指针。

还有另一种方法创建Recordset对象:

P222L18。

用此种方法创建的Recordset对象的Open方法有四个参数。

六、在客户端用VFP访问网络数据库SQLServer上的数据库

(一)在客户端设置ODBC:

创建ODBC连接的操作步骤。

P213

开始/设置/控制面板/管理工具/数据源(ODBC)

在此添加数据源,命名数据源名(假定命名为jxgl),填写服务器名,使用SQLServer验证,更改默认的数据库。

附:

可继续完成以下设置:

在客户端VFP环境下打开项目管理器(项目中至少应有一个数据库),展开数据库,选择连接,单击新建按钮,打开连接设计器对话框,填写有关内容(也可以打开一个数据库,用createconnection命令打开连接设计器对话框),最后在保存对话框输入连接名(假定为LJ)。

该连接还可使用以下命令建立:

CREATECONNECTION<连接名>DATASOURCE<数据源名>USERIDPASSWORD<密码>DATABASE<数据库名>

例:

CREATECONNECTIONLJDATASOURCE“jxgl”USERID“sa”PASSWORD“”DATABASE“教学管理”

(二)在客户端VFP中使用SPT(SQLPassThrough)技术

1.连接数据源<连接句柄变量名>=SQLConnect(<数据源名>,,<帐户密码>)

例如:

dh=SQLCONNECT(“LJ”,”sa”,””)

也可使用<连接句柄变量名>=SQLStringConnect(“dsn=<数据源名>;uid=;pwd=<帐户密码>”)

例如dh=SQLStringConnect(“dsn=LJ;uid=sa;pwd=”)

如果连接成功,dh返回正整数句柄,失败返回-1。

附:

也可以使用命令<连接句柄变量名>=SQLConnect(<连接名>)

例:

DH=SQLConnect(“LJ”)

2.执行SQL命令SQLEXEC(<连接句柄变量名>,

例如:

(1)SQLEXEC(dh,”SELECT*FROM课程”,”tmb”)

selecttmp

browse

在查询命令中添加READWRITE关键词,可得到可读写的临时表。

(2)SQLEXEC(dh,"INSERTINTO课程Values('W2060701','网络数据库',4,'网络数据库教程',Null,'马路长')")

(3)P1='W2060709'

P2='网络数据库'

P3='网络数据库教程'

SQLEXEC(dh,"INSERTINTO课程Values(?

P1,?

P2,4,?

P3,Null,'马路宽')")

用K=SQLEXEC(……,如果成功,K返回1,失败返回-1。

K=SQLEXEC(dh,"INSERT学生values('200299','胖胖','女','1983-11-11','上海',default,'200208',default,0,'200202')")

可用SQLCOMMIT(DH)、SQLROLLBACK(DH)提交或回滚事务。

3.断开连接SQLDISCONNECT(DH)

七、Delphi访问SQL数据库

1.ADO控件P304

2.使用TADODataSet访问SQL数据库(静态SQL命令)

例:

窗体如下图:

图中的控件及属性如下表:

控件名

属性名

属性值

ADODataSet1

ConnectionString

Provider=SQLOLEDB.1;Password=200704;PersistSecurityInfo=True;UserID=sa;InitialCatalog=教学管理;DataSource=JSJ1

CommandType

cmdText

CommandText

select学号,姓名,性别,出生日期,出生地,已修学分,组长,班级from学生WHERELEFT(出生地,2)='湖北'

DataSource1

DataSet

ADODataSet1

DBGrid1

DataSource

DataSource1

Button1

Caption

第一个

Button2

Caption

上一个

Button3

Caption

下一个

Button4

Caption

最后一个

Edit1

BitBtn1

Caption

&Close

Kind

bkClose

type

TForm1=class(TForm)

ADODataSet1:

TADODataSet;

DataSource1:

TDataSource;

DBGrid1:

TDBGrid;

BitBtn1:

TBitBtn;

Button1:

TButton;

Button2:

TButton;

Button3:

TButton;

Button4:

TButton;

Edit1:

TEdit;

procedureButton1Click(Sender:

TObject);

procedureButton3Click(Sender:

TObject);

procedureButton2Click(Sender:

TObject);

procedureButton4Click(Sender:

TObject);

private

{Privatedeclarations}

public

{Publicdeclarations}

end;

var

Form1:

TForm1;

implementation

{$R*.dfm}

procedureTForm1.Button1Click(Sender:

TObject);

vari:

single;

begin

ADODataset1.First;

i:

=ADODataset1.FieldByname('已修学分').value;

Edit1.Text:

=FloatToStr(i);

//Edit1.Text:

=ADODataset1.FieldByname('已修学分').value;

end;

procedureTForm1.Button3Click(Sender:

TObject);

begin

ADODataset1.Next;

Edit1.Text:

=ADODataset1.FieldByname('出生日期').Value;

end;

procedureTForm1.Button2Click(Sender:

TObject);

begin

ADODataset1.Prior;

Edit1.Text:

=ADODataset1.FieldByname('姓名').AsString;

end;

procedureTForm1.Button4Click(Sender:

TObject);

begin

ADODataset1.Last;

Edit1.Text:

=ADODataset1.FieldByname('姓名').AsString;

end;

end.

3.使用TADOQuery访问SQL数据库(动态SQL命令)

(1)将参数值嵌入SQL命令

adoquery1.Close;

adoquery1.SQL.Clear;

adoquery1.SQL.add('select学号,姓名,性别,出生日期,出生地,已修学分from学生where出生地like'''+edit5.text+'%''');

adoquery1.Open;

edit2.Text:

=adoquery1.FieldByName('姓名').AsString;

edit3.Text:

=adoquery1.FieldByName('性别').AsString;

edit4.Text:

=adoquery1.FieldByName('出生日期').AsString;

(2)使用命名参数

adoquery2.Close;

adoquery2.SQL.Clear;

adoquery2.SQL.add('insertinto成绩(学号,课程编号,分数)values(:

a1,:

a2,:

a3)');

adoquery2.Parameters.ParamByName('a1').Value:

=Edit1.Text;

adoquery2.Parameters.ParamByName('a2').Value:

=Edit2.Text;

adoquery2.Parameters.ParamByName('a3').Value:

=StrToFloat(edit3.text);

adoquery2.ExecSQL;

(3)混合使用嵌入参数值和命名参数

adoquery2.Close;

adoquery2.SQL.clear;

adoquery2.sql.Add('update学生set已修学分=已修学分+:

a1');

adoquery2.sql.Add('where班级='''+trim(edit5.text)+'''');

adoquery2.Parameters.ParamByName('a1').Value:

=strtofloat(edit1.text);

adoquery2.ExecSQL;

(4)

adoquery2.Close;

adoquery2.SQL.clear;

adoquery2.sql.Add('deletefrom成绩where学号=:

a1');

adoquery2.Parameters.ParamByName('a1').Value:

=trim(edit5.text);

adoquery2.execsql;

 

4.调用存储过程

已在SQLServer中执行了以下命令:

CREATEPROCEDUREJS0ASSELECT*FROM学生

CREATEPROCEDUREJS@CSDVARCHAR(10)ASSELECT*FROM学生WHERE出生地like@CSD+'%'

--在成绩表中添加一条记录,如果成绩及格,还要在学生表中增加学分。

CREATEPROCEDURE输入考试分数

@XHCHAR(6),@KCHCHAR(8),@FSDECIMAL(4,1)

AS

IFEXISTS(SELECT*FROM学生WHERE学号=@XH)

BEGIN

INSERT成绩VALUES(@XH,@KCH,@FS)

IF@FS>=60

UPDATE学生SET已修学分

=已修学分+(SELECT学分FROM课程WHERE课程编号=@KCH)

WHERE学号=@XH

END

ELSE

PRINT'无此学号'+@XH

--在成绩表中删除指定学号和课程的记录,如果所删的分数及格,还要在学生表中减去对应的学分。

CREATEPROCEDURE删除考试分数

@XHCHAR(6),@KCHCHAR(8)

AS

DECLARE@FSDECIMAL(4,1)

SET@FS=(SELECTMAX(分数)FROM成绩

WHERE学号=@XHAND课程编号=@KCH)

IF@FS>0

DELETEFROM成绩WHERE学号=@XHAND课程编号=@KCH

IF@FS>=60

UPDATE学生SET已修学分

=已修学分-(SELECT学分FROM课程WHERE课程编号=@KCH)

WHERE学号=@XH

 

(1)使用ADOStoredproc调用存储过程

①无参调用JS0

ADOStoredproc1.Close;

ADOStoredproc1.ProcedureName:

='js0';

ADOStoredproc1.Active:

=True;

②有参调用JS

ADOStoredproc1.Close;

ADOStoredproc1.Active:

=false;

ADOStoredproc1.ProcedureName:

='js';

ADOStoredProc1.Parameters.Clear;

ADOStoredProc1.Parameters.Refresh;

ADOStoredProc1.Parameters.ParamByName('@csd').Value:

=trim(edit5.Text);

//ADOStoredproc1.Prepared;

ADOStoredproc1.Active:

=True;

③有参调用“输入考试分数”

ADOStoredproc1.Close;

ADOStoredproc1.Active:

=false;

ADOStoredproc1.ProcedureName:

='输入考试分数';

ADOStoredProc1.Parameters.Clear;

ADOStoredProc1.Parameters.Refresh;

ADOStoredProc1.Parameters.ParamByName('@XH').Value:

=trim(edit2.Text);

ADOStoredProc1.Parameters.ParamByName('@KCH').Value:

=trim(edit3.Text);

ADOStoredProc1.Parameters.ParamByName('@FS').Value:

=StrToFloat(trim(edit4.Text));

//ADOStoredproc1.Prepared;

ADOStoredproc1.ExecProc;

(2)使用TADOQuery调用存储过程

①无参调用JS0

ADOQuery1.Close;

ADOQuery1.SQL.Clear;

ADOQuery1.SQL.Add('js0');

adoquery1.OPEN;

DataSource1.DataSet:

=ADOQuery1;

②有参调用JS

ADOQuery1.Close;

ADOQuery1.SQL.Clear;

ADOQuery1.SQL.Add('js:

cs');

ADOQuery1.Parameters.Clear;

ADOQuery1.Parameters.Refresh;

ADOQuery1.Parameters.ParamByName('@csd').Value:

=trim(edit5.Text);

//adoquery1.ExecSQL;

adoquery1.OPEN;

③有参调用“输入考试分数”

ADOQuery1.SQL.Clear;

ADOQuery1.SQL.Add('输入考试分数:

a1,:

a2,:

a3');

ADOQuery1.Parameters.Clear;

ADOQuery1.Parameters.Refresh;

ADOQuery1.Parameters.ParamByName('@XH').Value:

=trim(edit2.Text);

ADOQuery1.Parameters.ParamByName('@KCH').Value:

=trim(edit3.Text);

ADOQuery1.Parameters.ParamByName('@FS').Value:

=StrToFloat(trim(edit4.Text));

adoquery1.ExecSQL;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 哲学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1