ImageVerifierCode 换一换
格式:DOCX , 页数:24 ,大小:21.40KB ,
资源ID:8742517      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8742517.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(vc连接数据可代码.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

vc连接数据可代码.docx

1、vc连接数据可代码(1)、引入ADO类 #import c:program filescommon filessystemadomsado15.dll no_namespace rename (EOF, adoEOF) =ConnectionTimeout = 0; hr = m_pConnection-Open( Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db.mdb, , , adModeUnknown); /m_pConnection-PutDefaultDatabase (_bstr_t)DB);/设置默认数据库 m_pCommand.C

2、reateInstance(_uuidof(Command); m_pCommand-CommandTimeout = 5; m_pCommand-ActiveConnection = m_pConnection; catch(_com_error e)/捕捉异常 CString errormessage; errormessage.Format(连接数据库失败!rn错误信息:%s,e.ErrorMessage(); AfxMessageBox(errormessage);/显示错误信息 (2)、关闭 /如果数据库连接有效 if( m_pConnection-State ) m_pConnec

3、tion-Close(); m_pConnection = NULL; (3)、设置连接时间 /设置连接时间- pConnection-put_ConnectionTimeout(long(5); 2.打开一个结果集 (1)打开,首先创建一个_RecordsetPtr实例,然后调用Open()得到一条SQL语句的执行结果 _RecordsetPtr m_pRecordset; m_pRecordset.CreateInstance(_uuidof(Recordset); / 在ADO操作中建议语句中要常用try.catch()来捕获错误信息, / 因为它有时会经常出现一些意想不到的错误。jin

4、gzhou xu try m_pRecordset-Open(SELECT * FROM DemoTable,/ 查询DemoTable表中所有字段 m_pConnection.GetInterfacePtr(), / 获取库接库的IDispatch指针 adOpenDynamic, adLockOptimistic, adCmdText); catch(_com_error *e) AfxMessageBox(e-ErrorMessage(); (2)关闭结果集 m_pRecordset-Close(); 3.操作一个结果集 (1)、遍历(读取) a)、用pRecordset-adoEOF来

5、判断数据库指针是否已经移到结果集的末尾了;m_pRecordset-BOF判断是否 在第一条记录前面: while(!m_pRecordset-adoEOF) var = m_pRecordset-GetCollect(Name); if(var.vt != VT_NULL) strName = (LPCSTR)_bstr_t(var); var = m_pRecordset-GetCollect(Age); if(var.vt != VT_NULL) strAge = (LPCSTR)_bstr_t(var); m_AccessList.AddString( strName + - +str

6、Age ); m_pRecordset-MoveNext(); b)、取得一个字段的值的办法有两种办法 一是 /表示取得第0个字段的值 m_pRecordset-GetCollect(Name); 或者 m_pRecordset-GetCollect(_variant_t(long(0); 二是 pRecordset-get_Collect(COLUMN_NAME); 或者 pRecordset-get_Collect(long(index); (2)、添加 a)、调用m_pRecordset-AddNew(); b)、调用m_pRecordset-PutCollect();给每个字段赋值 c

7、)、调用m_pRecordset-Update();确认 (3)、修改 (4)、删除 a)、把记录指针移动到要删除的记录上,然后调用Delete(adAffectCurrent) try / 假设删除第二条记录 m_pRecordset-MoveFirst(); m_pRecordset-Move(1); / 从0开始 m_pRecordset-Delete(adAffectCurrent); / 参数adAffectCurrent为删除当前记录 m_pRecordset-Update(); catch(_com_error *e) AfxMessageBox(e-ErrorMessage()

8、; 4.直接执行SQL语句,除了要用到结果集其余的大部分功能都可以直接用SQL语言实现 (1)、用_CommandPtr和_RecordsetPtr配合 _CommandPtr m_pCommand; m_pCommand.CreateInstance(_uuidof(Command); / 将库连接赋于它 m_pCommand-ActiveConnection = m_pConnection; / SQL语句 m_pCommand-CommandText = SELECT * FROM DemoTable; / 执行SQL语句,返回记录集 m_pRecordset = m_pCommand-

9、Execute(NULL, NULL,adCmdText); (2)、直接用_ConnectionPtr执行SQL语句 _RecordsetPtr Connection15:Execute ( _bstr_t CommandText, VARIANT * RecordsAffected, long Options ) 其中CommandText是命令字串,通常是SQL命令。 参数RecordsAffected是操作完成后所影响的行数, 参数Options表示CommandText中内容的类型,Options可以取如下值之一: adCmdText:表明CommandText是文本命令 adCmd

10、Table:表明CommandText是一个表名 adCmdProc:表明CommandText是一个存储过程 adCmdUnknown:未知 例子: _variant_t RecordsAffected; m_pConnection-Execute(UPDATE users SET old = old+1,&RecordsAffected,adCmdText); 5.调用存储过程 (1)、利用_CommandPtr _CommandPtr m_pCommand; m_pCommand.CreateInstance(_uuidof(Command); m_pCommand-ActiveConn

11、ection = m_pConnection; / 将库连接赋于它 m_pCommand-CommandText = Demo; m_pCommand-Execute(NULL,NULL, adCmdStoredProc); (2)、直接用_ConnectionPtr直接调用(见4.(2) 6.遍历数据库中的所有表名 _ConnectionPtr m_pConnect; _RecordsetPtr pSet; HRESULT hr; try hr = m_pConnect.CreateInstance(ADODB.Connection); if(SUCCEEDED(hr) CString dd

12、; dd.Format(Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s,file); hr = m_pConnect-Open(_bstr_t)dd,adModeUnknown); pSet = m_pConnect-OpenSchema(adSchemaTables); while(!(pSet-adoEOF) /获取表格 _bstr_t table_name = pSet-Fields-GetItem(TABLE_NAME)-Value; /获取表格类型 _bstr_t table_type = pSet-Fields-GetItem(TAB

13、LE_TYPE)-Value; /过滤一下,只输出表格名称,其他的省略 if ( strcmp(LPCSTR)table_type),TABLE)=0) CString tt; tt.Format(%s,(LPCSTR)table_name); AfxMessageBox(tt); pSet-MoveNext(); pSet-Close(); m_pConnect-Close(); catch(_com_error e)/捕捉异常 CString errormessage; errormessage.Format(连接数据库失败!rn错误信息:%s,e.ErrorMessage(); AfxM

14、essageBox(errormessage); return -1; 7.遍历一个表中的所有字段 Field * field = NULL; HRESULT hr; Fields * fields = NULL; hr = m_pRecordset-get_Fields (&fields); /得到记录集的字段集和 if(SUCCEEDED(hr) fields-get_Count(&ColCount); /得到记录集的字段集合中的字段的总个数 for(i=0;iItemi-get_Name(&bstrColName); /得到记录集/中的字段名 strColName=bstrColName

15、; nameField = strColName; m_FieldsList.AddString(nameField); if(SUCCEEDED(hr) fields-Release();/释放指针 附: 1、_variant_t (1)、一般传给这3个指针的值都不是MFC直接支持的数据类型,而要用_variant_t转换一下 _variant_t(XX)可以把大多数类型的变量转换成适合的类型传入: (2)、_variant_t var;_variant_t - long: (long)var; _variant_t - CString: CString strValue = (LPCSTR

16、)_bstr_t(var); CString - _variant_t: _variant_t(strSql); 2、BSTR宽字符串与CString相互转换 BSTR bstr; CString strSql; CString - BSTR: bstr = strSql.AllocSysString(); BSTR - CString: strSql = (LPCSTR)bstr; 3、_bstr_t与CString相互转换 _bstr_t bstr; CString strSql; CString - _bstr_t: bstr = (_bstr_t)strSql; _bstr_t - C

17、String: strSql = (LPCSTR)bstr; 4、关于时间 Access:表示时间的字符串#2004-4-5# Sql:表示时间的字符串2004-4-5 DateField(时间字段) select * from my_table where DateField #2004-4-10# try m_pCommand-CommandText = INSERT INTO tTest(age) VALUES(23f2) ; m_pRecordset = m_pCommand-Execute(NULL,NULL, adCmdText); catch(_com_error e)/捕捉异常

18、 CString errormessage; errormessage.Format(连接数据库失败!rn错误信息:%s,e.ErrorMessage(); AfxMessageBox(errormessage);/显示错误信息 TopODBC链接 适合数据库类型 链接方式 access Driver=microsoft access driver(*.mdb);dbq=*.mdb;uid=admin;pwd=pass; dBase Driver=microsoft dbase driver(*.dbf);driverid=277;dbq=-; Oracle Driver=microsoft

19、odbc for oracle;server=oraclesever.world;uid=admin;pwd=pass; MSSQL server Driver=sql server;server=servername;database=dbname;uid=sa;pwd=pass; MS text Driver=microsoft text driver(*.txt; *.csv);dbq=-;extensions=asc,csv,tab,txt;Persist SecurityInfo=false; Visual Foxpro Driver=microsoft Visual Foxpro

20、driver;sourcetype=DBC;sourceDB=*.dbc;Exclusive=No; MySQL Driver=mysql;database=yourdatabase;uid=username;pwd=yourpassword;option=16386; OLEDB链接 适合的数据库类型 链接方式 access Provider=microsoft.jet.oledb.4.0;data source=your_database_path;user id=admin;password=pass; Oracle Provider=OraOLEDB.Oracle;data sourc

21、e=dbname;user id=admin;password=pass; MS SQL Server Provider=SQLOLEDB;data source=machinename;initial catalog=dbname;userid=sa;password=pass; MS text Provider=microsof.jet.oledb.4.0;data source=your_path;Extended Propertiestext;FMT=Delimited另一个:1、提取单条记录/#import C:Program FilesCommon FilesSystemADOms

22、ado15.dll /no_namespace,rename(EOF,adoEOF),named_guidsCoInitialize(NULL);_bstr_t varSource=Provider=Microsoft.Jet.OLEDB.4.0;Data Source=*.mdb;/_bstr_t varSource=Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;_ConnectionPtr m_pConnection(_uuidof(Connecti

23、on);m_pConnection-Open(varSource,adModeUnknow);_RecordsetPtr m_pSet(_uuid(Recordset);try m_pSet-Open(%1,m_pConnection.GetInterfacePtr()adOpenDynamic,adLockPessimistic,adCmdText);catch(_com_error *e)AfxMessageBox(e-ErrorMessage();return;_variant_t var;CString %2=;long fldc=m_pSet-GetFields()-GetCount

24、();long i=0;try m_pSet-MoveFirst();if(!m_pSet-adoEOF)for(i=0;iGetCollect(long)i);var.ChangeType(VT_BSTR);%2+=var.bstrVal;%2+= ;/m_pSet-MoveNext();catch(_com_error *e)AfxMessageBox(e-ErrorMessage();delete e;/m_pSet-MoveFirst();CoUninitialize(NULL);2.单值比较/#import C:Program FilesCommon FilesSystemADOms

25、ado15.dll /no_namespace,rename(EOF,adoEOF),named_guidsCoInitialize(NULL);_bstr_t varSource=Provider=Microsoft.Jet.OLEDB.4.0;Data Source=*.mdb;/_bstr_t varSource=Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;_ConnectionPtr m_pConnection(_uuidof(Connecti

26、on);m_pConnection-Open(varSource,adModeUnknow);_RecordsetPtr m_pSet(_uuid(Recordset);try m_pSet-Open(%1,m_pConnection.GetInterfacePtr()adOpenDynamic,adLockPessimistic,adCmdText);catch(_com_error *e)AfxMessageBox(e-ErrorMessage();return;_variant_t var;try m_pSet-MoveFirst();if(!m_pSet-adoEOF)var=m_pS

27、et-GetCollect(long)0);var.ChangeType(VT_I2);int %3=var.intVal;if(%3=%4)%5/m_pSet-MoveNext();catch(_com_error *e)AfxMessageBox(e-ErrorMessage();delete e;/m_pSet-MoveFirst();CoUninitialize(NULL);3.显示表格/#import C:Program FilesCommon FilesSystemADOmsado15.dll /no_namespace,rename(EOF,adoEOF),named_guids

28、CoInitialize(NULL);_bstr_t varSource=Provider=Microsoft.Jet.OLEDB.4.0;Data Source=*.mdb;/_bstr_t varSource=Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myPassword;_ConnectionPtr m_pConnection(_uuidof(Connection);m_pConnection-Open(varSource,adModeUnknow);/打开属性为默认(adModeRead(只读),adMo

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

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