vs2010连接oracle数据库
来源:互联网 发布:java调用系统api接口 编辑:程序博客网 时间:2024/05/16 10:03
1 建立工程文件
文件-新建-项目-MFC程序控件-选择名称及位置-确定-基于对话框-完成
删除已有的三个组件
2 添加ADO、DBGRID控件
2.1添加类
选中解决方案资源管理器中的项目名称-项目-添加类-双击ActiveX控件中的MFC类-
选择ADO-接口生成类-完成
选择DataGrid-接口生成类-完成
2.2插入ActiveX控件
对话框右击-插入ActiveX控件-ADO
2.3选择工具箱
工具-选择工具箱项-ADODC-DataMergeError-Data
将工具栏中对应的控件填入
3 修改控件属性、添加事件处理事务(消息类型、类列表、程序名、添加编辑)、添加连接和断开函数
3.1 对于BUTTON1
点击【添加编辑即可】
3.2 对于BUTTON2
同上
3.3 对于DataGrid1(添加变量、类型、控件、类别、变量名)
右击添加变量
点击【完成】
4 定义相关变量并完成相关函数的编写
4.1 对于StdAfx.h的操作
加入语句:
#import "msado15.dll"no_namespace rename("EOF","adoEOF")
4.2 对于VC_ORACLEDlg.cpp的操作
4.2.1 定义变量
//声明指向ADO对象的智能指针
_ConnectionPtr m_pConnection;
_RecordsetPtr m_pRecordSet; //数据集指针
4.2.2 实现连接函数OnBnClickedConnect
OnConnect函数中添加以下代码:
CStringstrConnect =_T( "Provider=OraOLEDB.Oracle.1;Password=aa;Persist SecurityInfo=True;User ID=data;DataSource=(DESCRIPTION=(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST -192.168.1.110)(PORT=1521)) )(CONNECT_DATA =(SID = ORCL)))");
HRESULT hr;
//实例化ADO对象
hr =m_pConnection.CreateInstance("ADODB.Connection");
try
{
if(SUCCEEDED(hr))
{
m_pConnection->ConnectionTimeout= 15; //设置连接时间
m_pConnection->Open(_bstr_t(strConnect),"","",adModeUnknown); //连接SQL SERVER
//char*pMessage;
//pMessage="连接数据库成功";
CStringMessage;
Message.Format(_T("连接数据库成功"));
AfxMessageBox(Message);
}
else
{
CString Message;
Message.Format(_T("ADO对象实例化失败"));
AfxMessageBox(Message);
}
}
catch(_com_error e) //捕捉异常
{
CString errMessage;
errMessage.Format(_T("连接数据库失败!\r\n错误信息:%s"),
(LPCTSTR)e.Description(),
(LPCTSTR)e.ErrorMessage());
AfxMessageBox(errMessage);
}
//--------------------------------将数据库显示在界面上---------------------------------------------
//char *pstrSql;
//pstrSql="select * from 12 ";
CString strSql=_T("select * from 12");
try
{
//创建数据集
m_pRecordSet.CreateInstance("ADODB.Recordset");
if (m_pRecordSet==NULL)
{
//AfxMessageBox("secflow---recordSet对象创建失败");
}
//设置游标属性
m_pRecordSet->CursorLocation=adUseClient;
m_pRecordSet->Open(_variant_t(strSql),_variant_t((IDispatch*)m_pConnection,true),adOpenKeyset, adLockOptimistic, adCmdUnknown);
}
catch (_com_error& e)
{
CString strMsg;
strMsg.Format(_T("错误描述:%s\n错误消息%s"),
(LPCTSTR)e.Description(),
(LPCTSTR)e.ErrorMessage());
AfxMessageBox(strMsg);
}
m_datagrid.putref_DataSource(NULL);//putref_DataSource
m_datagrid.putref_DataSource((LPUNKNOWN)m_pRecordSet);
m_datagrid.Refresh();
4.2.3 实现连接函数OnBnClickedDisconnect
OnDisconnect函数中添加以下代码:
if(m_pRecordSet->State)
{
m_pRecordSet->Close();
m_pConnection->Close();
m_pRecordSet.Release();
m_pConnection.Release();
}
5 复制对应的动态连接库msado15.dll实现VC和ORCL的连接
将msado15.dll文件到工程所在的文件夹下。
点击编译运行即可!点击【连接数据库】
6 错误解决方法
报错:LINK :fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
解决方案:
删除下面文件夹中较早版本cvtres.exe(可用重命名代替删除,防止无法找回)
D:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64(已尝试删除成功)
D:\Program Files(x86)\Microsoft Visual Studio 10.0\VC\bin
7 字符集设置
默认字符集为Unicode,此字符集下Cstring型对象复制需要加_T()
可将字符集设置为多字节字符集(项目—属性—配置属性—常规—字符集)
8 编辑框
修改ID
对话框添加类向导-成员变量-添加变量
ID中赋初值m_IP1 = _T("192");
连接数据库中改成“+ m_IP1+”
数据库连接函数中加UpdateData(TRUE);(控件值传至程序中,置于函数前部)UpdateData(TRUE);(程序值传至控件中,置于函数后部)
9用户名、密码
修改ID
对话框添加类向导-成员变量-添加变量
ID中赋初值m_code = _T("aa");
连接数据库中改成“+ m_code+”
数据库连接函数中加UpdateData(TRUE);(不需重复添加)
Code属性中的password改为true
10 按钮
添加处理程序
void C市流量Dlg::OnBnClickedcrtbstable()
{
CStringcsSql;
// TODO: 在此添加控件通知处理程序代码
csSql="create table TR(stationid INTEGER,stationnameVARCHAR2(20),provinceid VARCHAR2(8),provincename VARCHAR2(8),sumentry INTEGER,equentryINTEGER,weightentry INTEGER,sumexit INTEGER,equexit INTEGER,weightexitINTEGER)";
m_pConnection->Execute((_bstr_t)csSql,NULL, adCmdUnknown);
}
11 IP组件
添加变量
BYTE IP1, IP2, IP3, IP4;
m_IPADDRESS.GetAddress(IP1, IP2, IP3, IP4);
CString IP;
IP.Format("%d%s%d%s%d%s%d",IP1,".",IP2,".",IP3,".",IP4);
CString strConnect =_T( "Provider=OraOLEDB.Oracle.1;Password="+m_password+";Persist Security Info=True;User ID="+m_username+";Data Source=(DESCRIPTION=(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = "+IP+")(PORT =1521)) )(CONNECT_DATA = (SID = ORCL)))");
- vs2010连接oracle数据库
- VS2010连接Oracle数据库 C#
- vs2010使用occi连接oracle数据库
- vs2010使用occi连接oracle数据库
- ASP.NET(C#) VS2010连接Oracle数据库
- ASP.NET(C#) VS2010连接Oracle数据库
- ASP.NET(C#) VS2010连接Oracle数据库
- VS2010连接SQL Server、Oracle数据库的字符串写法
- 在vs2010下使用C#连接Oracle数据库
- VS2010下使用otl连接到oracle数据库
- 在vs2010下使用C#连接Oracle数据库
- 在vs2010下使用C#连接Oracle数据库
- 在vs2010下使用C#连接Oracle数据库
- VS2010 C# 如何连接Oracle 11g数据库
- VS2010 VS2012 如何连接Oracle 11g数据库
- vs2010连接mysql数据库
- vs2010连接Mysql数据库
- VS2010连接mysql数据库
- 慢慢十年,一品温如言
- 【Vim】Vim的常用小技巧笔记(不定期更新)
- Lombok 安装、入门 - 消除冗长的 java 代码
- leetcode题解分析_85. Maximal Rectangle
- 关于spark ui的端口号,踩到一个浏览器的坑,其实不算一个问题
- vs2010连接oracle数据库
- C#在WebBrowser下获取完整的Cookies(包括含HTTPOnly属性的)
- Java多线程之sleep(),yield(),wait(),notify(),notifyAll()等方法介绍
- ionic 中的折线图与柱状图
- 深入理解l内核v4l2框架之video for linux 2
- Linux C++ 递归删除文件夹下所以内容
- 防止Access_token过期的方法
- 解决安卓手机卡顿的七个技巧
- iptable 基础