VC+SQL数据库.docx
- 文档编号:10551519
- 上传时间:2023-02-21
- 格式:DOCX
- 页数:16
- 大小:551.01KB
VC+SQL数据库.docx
《VC+SQL数据库.docx》由会员分享,可在线阅读,更多相关《VC+SQL数据库.docx(16页珍藏版)》请在冰豆网上搜索。
VC+SQL数据库
VC++6.0/SQLServer图书管理系统指南
该实验主要采用了ADO(ActiveXDataObjects)数据库访问技术,以开发图书管理系统为例,逐一介绍VC++6.0开发数据库的基本方法。
主要任务是连接MFC程序和数据库,完成基本的图书信息的操作。
1、创建图书管理系统主框架
创建主框架是设计图书信息管理系统的第一步,有了框架以后才可以在其中添加对话框、控件、菜单等并实现相关功能。
单击DataSource按钮,
按“下一步”按钮
测试成功后,按确定键。
选择数据库表
之后的返回VC创建工程界面,单击“完成”按钮,进入VC++编程框架
2、VC++程序和数据库连接的桥梁。
ADO有最重要的三个对象:
Connection、Command和Recordset,分别代表“连接”对象、“命令”对象和“记录集”对象。
首先要添加ADODataControl控件。
(1)选择菜单项的“工程”--“增加到工程”---“ComponentsAndControls…”,选择RegisteredActiveXControls文件夹
(2)再选择MicrosoftADODataControl6.0(SP4)(OLEDB)控件,然后Insert,选择MicrosoftDataGridControl6.0(SP5)(OLEDB)控件。
后文将这两个控件简称ADODC和DataGrid控件。
(3)在资源视图上单击Dialog文件夹左边的小加号,定位到IDD_LIB_FORM,选中“TODO:
在这个对话框里设置表格控制。
”,按“Delete”键将其删除。
从工具栏拉人ADODC和DataGrid控件到该对话框上。
右键单击ADODC控件,单击“属性”项,打开ADODC的属性页,选择“control”页,设置UseConnectionString属性。
单击“Build”(生成连接字符串)按钮。
此后的操作如上面DataSource设置步骤一样。
(4)选择“RecordSource”页,设置ADODC的RecorSource属性。
后操作如下:
(5)打开DataGrid控件的属性对话框,定位到“ALL”页。
然后选择“DataSource”一栏右边的“数值”设置为绑定的ADODC控件ID。
如下图:
(6)设置ADODC控件
(7)然后compile、Build、BuildExecute运行程序。
(保证数据库服务器已经连接)
BOOK基本信息录入
目的要求:
了解并掌握MFC利用OLEDB访问数据库的基本使用方法,实现记录的增、删、查功能。
界面创建:
(1)打开IDD_LIB_FORM窗体对话框。
删除“DataGrid”控件,将“ADODC”控件的General页,将“显示”选项不勾选,这样运行后界面中该控件将不显示。
(2)在窗体上添加如下控件:
6个静态文本控件StaticText,用于显示书名、作者等信息;5个编辑框控件EditBox;1个日期时间选取器控件DateTimePicker,用于设置出版时间;5个按钮控件Button,分别进行添加、查找等。
所有控件的标题设置如下:
为相应控件修改ID并设置其标题。
如下表,用户可逐一进行设置。
添加的控件
ID号
标题
编辑框(书名)
IDC_BKNAME
编辑框(书ISBN)
IDC_BKISBN
编辑框(书作者)
IDC_AUTHOR
编辑框(价格)
IDC_BKPRICE
编辑框(书出版日期)
IDC_PUBLISHTIME
编辑框(购买册数)
IDC_BKNUM
按钮
IDC_ADD
添加
按钮
IDC_SEARCH
查找
按钮
IDC_DELETE
删除
按钮
IDC_EXIT
退出
按钮
IDC_CHECK
检查您输入的书ISBN是否存在
(3)按Ctrl+W快捷键打开MFCClassWizard,切换MemberVariables页
主要代码:
(1)添加并修改StdAfx.h中如下加底纹部分代码:
………
//#include
#endif//_AFX_NO_DAO_SUPPORT
#include
……..
#endif//_AFX_NO_AFXCMN_SUPPORT
#import"c:
\ProgramFiles\CommonFiles\System\ado\msado15.dll"\
/*使用import指令引入ADO2组件*/
no_namespacerename("EOF","adoEOF")
以上语句的解释:
微软在MicrsoftStudio6中提供的ADO2,可以在VisualC++中使用ADO接口操纵SQLSERVER数据库。
#import"c:
\programfiles\commonfiles\system\ado\msado15.dll"no_namespacerename("EOF","adoEOF")
这一语句有何作用呢?
其最终作用同我们熟悉的#include类似,编译的时候系统会为我们生成msado15.tlh,ado15.tli两个C++头文件来定义ADO库。
几点说明:
(1)您的环境中msado15.dll不一定在这个目录下,请按实际情况修改
(2)在编译的时候肯能会出现如下警告,对此微软在MSDN中作了说明,并建议我们不要理会这个警告。
msado15.tlh(405):
warningC4146:
unaryminusoperatorappliedtounsignedtype,resultstillunsigned
(2)建立头文件LibConStr.h,在其中定义本应用系统在后续编程中要一直使用的连接字符串宏常量SQLCONSTR。
步骤:
“新建”按钮中选择“C/C++HeaderFile”文件名输入“LibConStr”。
代码如下:
#ifndef_LIBCONSTR_H_
#define_LIBCONSTR_H_
#defineSQLCONSTR"provider=SQLOLEDB.1;Password=0000;PersistSecurityInfo=True;UserID=sa;InitialCatalog=LibraryLib;DataSource=lhh"
#endif
其中加粗部分代码用户可以从ADODC控件属性的“UseConnectionString”中复制。
在LibView.cpp文件中加入头文件:
#include"LibConStr.h"
(3)打开LibView.h文件,在其中定义全局变量:
public:
//{{AFX_DATA(CXSCJView)
enum{IDD=IDD_XSCJ_FORM};
………
//}}AFX_DATA
_RecordsetPtrpRs;//声明Recordset对象指针
_ConnectionPtrpConnection;//声明Connection对象指针
(4)双击“添加”按钮或打开MFCClassWizard,在ObjectIDs、Classname、Messages中选择如下图:
按下AddFunction按钮,添加了OnAdd()函数,单击“EditCode”按钮。
编辑函数:
知识注解:
数据库连接的3个对象
1.Connection对象它代表与数据库的链接。
先要创建一个Connection对象
_Connectionm_pConnection;
m_pConnection.CreateInstance(“ADODB.Connection”);
对象创建完之后,还需设置具体属性链接到指定的数据库。
常用属性:
(1)ConnectionString属性。
指定数据源。
(2)ConnectionTimeout属性。
指定在终止和产生错误之前执行命令需要等待的时间,默认为30s。
(3)Mode属性。
对象修改数据的权限。
(4)State属性。
返回Connection对象的状态。
(5)Open方法。
用于打开到数据源的连接。
语法结构:
connection.Open(ConnectionString,UserId,Password,Options);
(6)Close方法。
关闭到数据库的连接。
2.Command对象定义了将对数据源执行的命令。
常用属性和方法:
(1)ActiveConnection属性。
通过设置该属性使打开的Connection连接与Command对象关联。
(2)CommandText属性。
定义命令的可执行文本。
(3)Execute方法。
执行CommandText定义的可执行文本。
3.Recordset对象表示来自基本表或命令执行结果的记录全集。
其常用属性和方法:
(1)AbsolutePosition属性。
指定Recordset对象当前记录的序号位置。
(2)adoBOF,adoEOF属性。
前者指示当前记录位置位于Recordset对象的第一个记录之前;后者指示当前记录位置位于Recordset对象的最后一个位置之后。
常用来判断记录指针是否越界。
(3)MaxRecord属性。
指定通过查询返回Recordset的记录的最大数目。
(4)GetCollect方法。
返回当前记录集中指定的字段值。
(5)Move方法。
在记录集中移动指针。
(6)MoveFirst,MoveLast,MoveNext,MovePrevious方法。
(7)Open方法。
打开基本表、查询结果或Recordset中记录的游标。
格式:
Recordset对象.Open(Source,ActiveConnection,CursorType,LockType,Options)
下面将解释五个参数的作用:
1、Source
Recordset对象可以通过Source属性来连接Command对象。
Source参数可以是一个Command对象名称、一段SQL命令、一个数据表名称、一个存储过程或是一个Recordset文件名。
2、ActiveConnection
Recordset对象可以通过ActiveConnection属性来连接Connection对象。
这里的ActiveConnection可以是一个Connection对象或是一串包含数据库连接信息(ConnectionString)的字符串参数。
3、CursorType
Recordset对象Open方法的CursorType参数表示将以什么样的游标类型启动数据,包括adOpenForwardOnly、adOpenKeyset、adOpenDynamic及adOpenStatic,分述如下:
常数常数值说明
adOpenForwardOnly0缺省值,启动一个只能向前移动的静态游标。
adOpenKeyset1类似动态游标,允许任意移动,并且允许更改记录集。
其他用户对记录集的添加和删除,这个游标反映不出来。
但它能反映出其他用户对记录集的更改。
adOpenDynamic2动态游标,允许所有操作,其他用户对记录集的添加、删除、更改在此记录集中都是可见的。
adOpenStatic3静态游标,允许在记录集中进行各种类型的移动,其他用户所做的添加、删除、更改将不可见。
4、LockType
Recordset对象Open方法的LockType参数表示要采用的Lock类型,LockType参数包含adLockReadOnly、adLockPessimistic、adLockOptimistic及adLockBatchOptimistic等,分述如下:
常数常数值说明
adLockReadOnly1缺省值,Recordset对象以只读方式启动。
adLockPessimistic2通常编辑记录是立即锁定数据源的该记录。
当数据源正在更新时,系统会暂时锁住其他用户的动作,以保持数据一致性。
adLockOptimistic3只在调用Update方法时才锁定记录。
当数据源正在更新时,系统并不会锁住其他用户的动作,其他用户可以对数据进行增、删、改的操作。
adLockBatchOptimistic4当数据源正在更新时,其他用户必须将CursorLocation属性改为adUseClient才能对数据进行增、删、改的操作。
5、Options
Recordset对象Open方法的Options参数表示对数据库请求的类型,Options参数包含adCmdText、adCmdTable、adCmdStoredProc及adCmdUnknown等,分述如下:
常数常数值说明
adCmdUnknown-1缺省值,表示指定的CommandText参数类型无法确定
adCmdText1表示指定的CommandText参数是一般的命令类型
adCmdTable2表示指定的CommandText参数是一个存在的表的名称
adCmdStoredProc3表示指定的CommandText参数是存储过程的名称
COM两个数据类型:
_variant_t和_bstr_t这两个类分别封装并管理VARIANT和BSTR这两种数据类型,VARIANT和BSTR这两种类型是COM中使用的数据类型。
为了C++中的变量应用到ADO编程中,只能进行数据类型的转换。
_variant_t和_bstr_t这两个类,就可以方便的把C++类型变量转换成COM中的变量了
(5)双击“删除”按钮执行以下函数
(6)双击“查找”按钮执行以下函数自己补充完成
voidCLibView:
:
OnSearch()
{
_variant_tvarFld;
/*此处代码自己根据“添加”按钮的设置模拟完成,实现建立ADO数据库连接、实例化记录集对象,完成查询。
查询是根据编辑框输入的BookISBN查询书的基本信息。
*/
if(!
pRs->RecordCount==0)
{
varFld=pRs->Fields->GetItem("BookName")->Value;//获取书名
CStringstrBN(_T(varFld.bstrVal));
strBN.TrimRight();
m_BKName=strBN;
/*此处代码完成pRS记录集对象中作者、价格、出版日期、购买册数赋予给相对应的编辑框*/
UpdateData(FALSE);//自动更新控件显示的内容
}
else
{AfxMessageBox("没有您想要找的书!
");}
}
(7)双击“退出”按钮执行以下函数
voidCLibView:
:
OnExit()
{
//TODO:
Addyourcontrolnotificationhandlercodehere
PostQuitMessage(0);
}
来自潮州论坛:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VC SQL 数据库