我的世界js是什么 double setp 是什么

后使用快捷导航没有帐号?
查看: 34|回复: 1
服务器:皮尔特沃夫
游戏ID:梵音弥鹿
她还没有牵手的人
蓝翔五星好导师
新人欢迎积分1 阅读权限150积分24347精华0UID帖子金钱212311 威望10
?ω- 战斗力-5美少女
    只@会@我的人
UID帖子威望10 多玩草3416 草元宝
整天就知道吃吃吃 我都胖了一圈
10:10:19 上传
为什么别人那么仙的动作,到我这里就变的这么蠢
10:05:30 上传
活动奖励发放 O(∩_∩)O
总评分:&金钱 + 100&
温文尔雅然哥哥
新人欢迎积分1 阅读权限150积分32055精华0UID帖子金钱99394 威望14
让时间说话~
UID帖子威望14 多玩草9447 草元宝
2014论坛年度勋章
参与论坛年度活动发放
参与桃花岛MM日历等活动获得专属限时勋章,喵!
版主培训勋章
版主培训勋章
英雄联盟MM专属勋章
英雄联盟MM专属勋章
天涯明月刀功勋勋章
这就是武侠
圣诞活动勋章
圣诞活动勋章
最强路人王
感谢对最强路人王贡献
初级灌水标兵
初级灌水标兵
呆萌小妞一只求带走
武林功勋勋章
武林功勋勋章
天蝎座勋章
天蝎座勋章
天秤座勋章
天秤座勋章
剑灵MM专属勋章
剑灵MM专属勋章
甜蜜情侣勋章
甜蜜情侣勋章
原创先锋勋章
原创先锋勋章
萌萌之情,萌主专属
多玩写手勋章
多玩写手勋章
春天纪念勋章
夏天纪念勋章
需要金钱:1100
Powered by
手机盒子客户端点击或扫描下载MFC中用ADO连接数据库
一、数据库操作准备
1、导入ADO动态链接库
在工程的stdafx.h中加入如下语句:
#import "c:\program files\common
files\system\ado\msado15.dll" no_namespace\
rename("EOF","adoEOF")
这一语句有何作用呢?其最终作用同我们熟悉的#include类似,编译的时候系统会为我们生成msado15.tlh和msado15.tli两个C++头文件来定义ADO库,即加载ADO动态库(msado15.dll)。
其中,no_namespace表明不使用命名空间,rename("EOF","adoEOF")表明把ADO中用到的EOF改为adoEOF,防止发生命名冲突。
注意:该代码需要在一行中完成,如果写成两行或者多行,行末要加上“\”符号,表示把这几行看成一行,如本例。
2、初始化OLE/COM库环境
在基于MFC的应用里,初始化OLE/COM库环境的一个比较好的位置是在应用类的InitInstance成员函数中,而且直接使用AfxOleInit,在退出应用时,该函数也负责COM资源的释放,将此函数添加在InitInstance中的如下位置:
CExpApp::InitInstance()
AfxEnableControlContainer();
//初始化OLE DLLs
if(!AfxOleInit())
&&&&&&&&&&
AfxMessageBox("初始化OLE DLL失败!");
&&&&&&&&&&
Return FALSE;
说明:也可以在InitInstance中使用::CoInitialize初始化OLE/COM库环境,但须在ExitInitInstance中使用::CoUninitialize释放占用的COM资源,显然使用AfxOleInit更为方便。
3、连接数据库
在Doc\View程序中,通常在应用类(App类)中进行数据库的连接。
1)声明一个Connection指针
_ConnectionPtr
&&&&&&&&&&
注:ADO最重要的三个对象有三个:连接对象(Connection)、命令对象(Command)和记录集对象(RecordSet)。在使用这三个对象的时候,需要定义与之相对应的智能指针,分别为_ConnectionPtr、_CommandPtr、_RecordsetPtr。
&&&&&&&&&&&&&&&&&&
由上述ConnectionPtr指针的使用步骤可知,和C++中的类指针使用方法一样,智能指针也要先定义指针变量、创建其实例(实例化),然后就可以调用它的方法和属性。不同的是,该智能指针最后是自动进行内存释放的。
&&&&&&&&&&&&&&&&&&&
所有的智能指针都是基于_com_ptr_t模板类的,该类封装了IUnknow接口的3个方法:QueryInterface、Addref和Release。它具有自动计数的机制,即在构造对象时,自动为该对象计数加1。析构对象时,自动调用Release方法。(即该类型的指针在使用后不需要手动释放内存)(但需要调用Close方法,关闭连接或者记录集)所以智能指针会使代码更加简洁并且不易出错。
&&&&&&2)创建Connection对象
&&&&&&&&&&&
m_pConnection.CreateInstance(__uuidof(Connection));
&&&&&&&&&&&
&&&&&&&&&&&
m_pConnection.CreateInstance("ADODB.Connection");
&&&&&&&&&&
上述两种方法均可。
&&&&&&&&&&&
注意:上面调用_ConnectionPtr接口指针的方法CreateInstance时,用的是“.”而非
3)设置连接字符串,以便指定需要的连接
&&&&&&&&&&&&
3.1) 使用JET数据库引擎实现对Acess2000类型的数据库info.mdb的连接
strSQL="Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=info.User ID=Passward=;";
strSQL=_T("Provider=Microsoft.Jet.OLEDB.4.0;Data
Source=info.User ID=Passward=;");
&&&&&&&&&&&&&3.2)
使用OLE DB提供者实现对SQL Server的标准安全连接串
strConnect=_T("Provider=Data
Source=MyServerN"
&&&&&&&&&&&&&&&&&&&&&&
"Initial Catalog=MyDateBaseN"
&&&&&&&&&&&&&&&&&&&&&&
"User ID=MyUserNPassword=MyP");
例程:strConnection="Provider=SQLOLEDB;DataSource=InitialCatalog=DVDRentDB_Data.MDF;"
&&&&&&&&&&&&&&&&&&&&&&&&&&
"User ID=Password=820415";
m_pConnection-&Open((_bstr_t)strSQL,"","",adModeUnknown);
或者是在此处不设置User ID和Password,而直接在Open的第2、3个参数中设置。
strConnection="Provider=SQLOLEDB;DataSource=InitialCatalog=DVDRentDB_Data.MDF";
m_pConnection-&Open((_bstr_t)strSQL,"sa","820415",adModeUnknown);
注意:上面设置连接字符串的时候,如果过长需要分行时,则每一行都要加上双引号,在最后加上分号即可。
如果是本地服务器,则DataSource=local或本地服务器名均可
若数据库没有设置密码,在连接字符串中可以将其省略,但User ID不能省
若数据库和程序文件不在同一文件夹下,直接写数据库名即可,在InitialCatalog中不需加上该数据库的存储器地址
&&&&&&&&&&&&&3.3)
使用OLE DB提供者实现对远程SQL Server的标准安全连接串
strConnect=_T("Provider=Network
Library=DBMSSOCN;"
&&&&&&&&&&&&&&&&&&&&&&&
"Data Source=130.120.110.001,1433;"
&&&&&&&&&&&&&&&&&&&&&&
"Initial Catalog=MyDateBaseN"
&&&&&&&&&&&&&&&&&&&&&&&
"User ID=MyUserNPassword=MyP");
4)、使用m_pConnection的Open方法实现对数据库的连接
在ADO的操作中建议使用try...catch(
)来捕获错误信息,因为它有时会经常出现一些意想不到的错误
m_pConnection-&Open( (_bstr_t) strSQL," ","
",adModeUnknown);
catch(_com_error
e)&&&&&&&&
//捕捉异常
CString strE
strError.Format( "连接数据库发生异常! \r \n错误信息:%s",e.ErrorMessage( )
AfxMessageBox(errormessage);&&&&&&&&
//显示错误信息
4、关闭连接
一般重载App类的ExitInstace( )函数实现
调用m_pConnection的Close方法关闭连接即可
m_pConnection-&Close(
m_pConnection=NULL;
注意:由于初始化COM库调用的是AfxOleInit,这种方法初始化COM库的优点就在于资源&&&
的释放也是自动进行的,所以不必担心资源泄漏的问题。
二、数据库操作
ADO库中包含的三个基本接口为_ConnectionPtr接口、_CommandPtr接口、_RecordsetPtr接口。
1、_ConnectionPtr接口
&&&&&&&&&&&
该接口返回一个记录集或一个空指针。
&&&&&&&&&&&
通常用它来创建一个数据库连接,或执行一条不返回任何结果的SQL语句,如一个存储过程。
&&&&&&&&&&&
不推荐使用_ConnectionPtr接口返回一个记录集,对于要返回记录集的操作通常用_RecordsetPtr来实现,而且使用_ConnectionPtr时要想得到记录数目必须遍历所有记录,但使用_RecordsetPtr时则不需要。
2、_CommandPtr接口
该接口返回一个记录集。
它提供了一种简单的方法来执行返回记录集的存储过程和SQL语句。
&&&&&&在使用_CommandPtr接口时,可以利用全局_ConnectionPtr接口,也可以在_CommandPtr
接口里直接使用连接串。如果只执行一次或者几次数据库访问操作,后者是比较好的选择。但是,如果频繁访问数据库,并要返回很多记录集,那么应该使用全局_ConnectionPtr接口创建一个数据库连接,然后使用_CommandPtr接口执行存储过程和SQL语句。
3、_RecordsetPtr接口
该接口是一个记录集对象。
与前两种对象相比,它对记录集提供了更多的控制功能,如记录锁定、游标控制等。同_CommandPtr接口一样,它不一定要使用一个已经创建的数据库连接,可以用一个连接串代替连接指针赋给_RecordsetPtr的connection成员变量,让它自己创建数据库连接。如果使用多个记录集,最好的方法是同Command对象一样使用已经创建了数据连接的全局_ConnectionPtr接口,然后使用_RecordsetPtr执行存储过程和SQL语句。
注意:可以使用Recordset对象来执行查询命令,但如果查询或者存储过程是需要参数的,这时就只能使用Command对象。
使用Recordset对象操作数据库:
假定已经成功使用Connection对象创建了数据源的连接,连接指针为m_pConnection。
1)创建记录集
&&&&&&&&&&&&&
声明记录集指针&&&&&&&
_RecordsetPtr&&&
&&&&&&&&&&&&&
创建记录集&&&&&&&&&&&&&&&
m_pRecordset.CreateInstance(__uuidof(Recordset));
2)打开记录集
&&&&&&&&&&&&&&
记录集指针创建完毕后,调用该指针的Open方法打开记录集。
&&&&&&&&&&&&&&
该函数声明如下:
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
HRESULT Recordset15::Open ( const _variant_t &
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
const _variant_t & ActiveConnection,
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
enum CursorTypeEnum CursorType,
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
enum LockTypeEnum LockType,
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
long Options ) ;
&&&&&&&&&&&&&&
各个参数的含义如下:
&&&&&&&&&&&&&&&
参数Source:为_variant_t类型的引用,可以为有效的Command对象、SQL语句、表名、存储过程调用等。
&&&&&&&&&&&&&&&
参数ActiveConnection:为_variant_t类型的引用,为已经建立好的连接。
&&&&&&&&&&&&&&
参数CursorType:用于设置在打开Recordset时提供者应使用的游标类型,它可取CursorTypeEnum
中的任一值,默认值为adOpenForwardOnly。
&&&&&&&&&&&&&&
LockType:用于设置在打开Recordset时提供者应使用的锁定类型,它可取枚举LockTypeEnum中的任一值,默认值为adLockReadOnly。
&&&&&&&&&&&&&&
参数 Options:用于设置获取Source(即Open第一个参数)的方式,其类型long。
例程1: CString strSQL = "select * from
mytablename";
&&&&&&&&&&&&&&&&&&&&&m_pRecordset-&Open
( _variant_t (strSQL),
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
m_pConnection.GetInterfacePtr(
),&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
adOpenDynamic,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
adLockOptimistic,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
adCmdText )
&&&&&&&&&&&&&
使用SQL语句作为Open方法的第一个参数Source的值,此时Options为adCmdText
例程2:&&&
m_pRecordset-&Open ( _variant_t ("tbDVDInfo")
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
m_pConnection.GetInterfacePtr( ),
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
adOpenDynamic,
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
adLockOptimistic,
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
adCmdTable ) ;
&&&&&&&&&&&&&&&&&
直接使用表名作为第一个参数,此时Options应为adCmdTable
3)遍历记录集
&&&&&&&&一般在返回记录集时,通常要遍历结果记录集,以便查看或编辑某一条记录,Recoreset指针提供了几个用于实现遍历的方法。
了避免发生异常,一般在使用MoveFirst、MovePrev之前,需要使用记录集的指针BOF属性来检测当前的记录集指针是否位于第一条记录之前;
在使用MoveLast、MoveNext之前需要使用记录集指针的EOF属性来检测当前的记录集指针是否位于最后一条记录之后。
4)记录集定位
&&&&&&&&&&&
记录集接口类提供了两种定位方法:绝对定位和书签定位
&&&&&&&&&&&
前者通过设置或者获取AbsolutePosition属性即可,其值从1开始,并且当前记录为记录集中第一条记录时等于1
&&&&&&&&&&&
对于后者可以通过设置或获取BookMark属性即可
5)访问记录集
&&&&&&&&&&&
最简单的方法是直接使用如下语句:
&&&&&&&&&&&
m_pRecordset-&GetCollect
&&&&&&&&&&&
设置字段值:
&&&&&&&&&&&
m_pRecordset-&PutCollect
(字段名,新值);
两个方法的原型:
_variant_t GetCollect ( const _variant_t
void PutCollect ( const _variant_t
& Index , const _variant_t &pvar
其中:参数Index可以是字符串表示字段名,也可以是整型,表示字段对应的序号。
&&&&&&&&&&&
pvar表示要写入的变量值。
var=m_pRentRecordset-&GetCollect("ID");
var=m_pRentRecordset-&GetCollect(long(0));&&
6)记录集更新
&&&&&&&&&&&
更新记录集包括添加新的记录、编辑当前记录和删除当前记录
&&&&&&&&&&&
记录集接口指针对这三种操作分别提供了相应的方法
&&&&&&&&&&&
添加新的记录:AddNew
&&&&&&&&&&&
编辑当前记录:Edit
&&&&&&&&&&&
删除当前记录:Delete
&&&&&&&&&&&
注意:记录集接口指针针对AddNew以及Edit方法提供了Update方法,用于在数据库中更新新添加或者编辑后的记录。
&&&&&&&&&&&
AddNew方法:用于添加新纪录(该添加是直接在表的末尾续加的),该方法可以使用参数,在参数中指定要添加的新纪录;也可以不使用参数,而在后面使用PutCollect方法,并需使用Update函数保存新纪录。
&&&&&&&&&&&
Update方法:用于保存从调用AddNew方法以来所作的任何更改。
//++++++++++++++++++++++++++++++++++++++++++
//在表的末尾增加新纪录
m_pRecordset-&AddNew();
//++++++++++++++++++++++++++++++++++++++++++
m_pRecordset-&PutCollect("姓名",_variant_t(m_strName));
m_pRecordset-&PutCollect("工作单位",_variant_t(m_strComName));
m_pRecordset-&PutCollect("单位地址",_variant_t(m_strComAddr));
//更新数据库-将新纪录存入数据库
m_pRecordset-&Update();
&&&&&&&7)记录集关闭
&&&&&&&&&&&
在对记录集的操作完成后,必须及时关闭记录集。
&&&&&&&&&&&
if ( m_pRecordset
&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&
m_pRecordset
-&Close( );
&&&&&&&&&&&&&&&&&&&&
m_pRecordset
&&&&&&&&&&&
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。结构化程序设计的基本思想是围绕系统功能自顶向下
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
结构化程序设计的基本思想是围绕系统功能自顶向下
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
正在努力加载中...
.Net程序使用SQLITE3和SQLite3简介
下载积分:1000
内容提示:.Net程序使用SQLITE3和SQLite3简介,sqlite使用,sqlite简介,android sqlite使用,sqlite的使用,sqlite怎么使用,sqlite使用手册,sqlite3 使用,如何使用sqlite,sqlite使用教程,sqlite e
xpert 使用
文档格式:DOC|
浏览次数:1|
上传日期: 08:55:46|
文档星级:
该用户还上传了这些文档
下载文档:.Net程序使用SQLITE3和SQLite3简介.DOC
官方公共微信

我要回帖

更多关于 我的世界奖励箱是什么 的文章

 

随机推荐