VC在控制台模式下访问Oracle数据库的操作指令
2013-11-04 09:04
411 查看
#include <afx.h> #include <iostream> #import "C:\Program Files\Common Files\System\ADO\msado15.dll" no_namespace rename("EOF","adoEOF") using namespace std; #define BUFSIZE 64 int main() { //char buf[BUFSIZE]; //int index; _ConnectionPtr m_pConnection; CoInitialize(NULL);//初始化COM组件 HRESULT hr=m_pConnection.CreateInstance(__uuidof(Connection)); if(SUCCEEDED(hr)) { cout<<"创建Connection对象成功!"<<endl; } try { _bstr_t strConnect="Provider=OraOLEDB.Oracle;User ID=scott;Password=19900624;Persist Security Info=True;Data Source=\"(DESCRIPTION =(ADDRESS_LIST =(ADDRESS = (PROTOCOL = TCP)(HOST = 10.108.85.137)(PORT = 1521)) )(CONNECT_DATA = (SID = ORCL)(SERVER=DEDICATED)))\""; hr=m_pConnection->Open(strConnect,"","",NULL); if(SUCCEEDED(hr)) cout<<"数据库已连接!"<<endl; } catch(_com_error e) //捕捉异常 { cout<<e.ErrorMessage()<<e.Description()<<endl; //cout<<"error"<<endl; return FALSE; } /////////////////查询数据库操作////////////////////// _variant_t var1; _RecordsetPtr m_pRecordset=NULL; //创建一个数据集智能指针 m_pRecordset.CreateInstance(__uuidof(Recordset));//初始化Recordset指针 char *content; char type; cin>>type; switch(type) { case 's': try { CString sql; sql="select * from DB_USER"; m_pRecordset=m_pConnection->Execute((_bstr_t)sql,NULL,adCmdText); } catch(_com_error *e) { cout<<e->ErrorMessage()<<endl; } try { if(!m_pRecordset->BOF) { m_pRecordset->MoveFirst(); } else { cout<<"表内为空"<<endl; } while(!m_pRecordset->adoEOF) { //var1=m_pRecordset->Fields->GetItem("USERNAME")->GetValue(); var1=m_pRecordset->GetCollect("USERNAME"); m_pRecordset->MoveNext(); if(var1.vt!=VT_NULL) { content=_com_util::ConvertBSTRToString((_bstr_t)var1); } cout<<"从数据库得到数据:"<<content<<endl; } } catch(_com_error *e) { cout<<e->ErrorMessage()<<endl; } break; case 'd': try { _variant_t RecordsAffected; CString sql; sql="delete * from DB_USER where USERID='3'"; m_pConnection->Execute((_bstr_t)sql,&RecordsAffected,adCmdText); cout<<"删除成功!"<<endl; } catch(_com_error *e) { cout<<e->ErrorMessage()<<endl; return 0; } break; case 'u': try { _variant_t RecordsAffected; CString sql; sql="update DB_USER set EMAIL='cupt5634@126.com' where USERID=1"; m_pConnection->Execute((_bstr_t)sql,&RecordsAffected,adCmdText); cout<<"更新成功!"<<endl; break; } catch(_com_error *e) { cout<<e->ErrorMessage()<<endl; return 0; } case 'a': try { _variant_t RecordsAffected; CString sql; sql="insert into DB_USER (USERNAME,PWD1,SEX,EMAIL,USERID)values ('Allen','1235698','女','698797@qq.com','3')"; m_pConnection->Execute((_bstr_t)sql,&RecordsAffected,adCmdText); cout<<"数据添加成功!"<<endl; } catch(_com_error *e) { cout<<e->ErrorMessage()<<endl; return 0; } break; } }
相关文章推荐
- 完全卸载oracle11g步骤
- oracle dblink
- Oracle 10g 中处理Clob大字段
- Oracle 多行记录合并/连接/聚合字符串的几种方法
- oracle查询多行数据合并成一行数据!
- win32 下oracle 10.2.0.1.0 致命bug:ORA-27300
- oracle数据库查询clob字段(Querying oracle clob column)
- oracle 常用视图
- Oracle常用数据字典表
- 关于nls_length_semantics参数
- 部署一台Windows 2003 32位服务器,安装oracle 9.2.0.1版本的数据库,并且升级到9.2.0.6
- Linux安装Oracle 11g Grid Infrastructure 出现OUI-10182错误解决办法
- 主机改名
- JDBC读取新插入Oracle数据库Sequence值的5种方法
- oracle listener troubleshooting 小结
- ubuntu 13.04 安装oracle
- hibernate解决传入oracle数据库没有时分秒问题
- oracle 12c EM Express 的补充
- AIX 6.1 安装oracle11G备忘
- 解决Win7 安装oracle 11g, plsql 连接出现 ora-12154