Oracle oo4o vs2010 c++

废话不多说,直接讲代码


1 引用库 :获取方法就是,如果你安装了oracle 就会在:盘符:\app\用户名\product\11.2.0\dbhome_1\oo4o\CPP 目录下包含LIB和INCLUDE这个两个文件夹

LIB文件夹里有一个ORACLM32.LIB 文件就是你需要引用的库文件,如何引用,自己看着办吧。

2 包含头文件同1,在INCLUDE文件夹中有两个头文件OBOUND.H和ORACL.H,这两个文件是需要引用的头文件,引用完,就是声明头文件,最好放在stdafx.h中

3 处理完库和头文件再来的就是用了,

1)新建mfc对话框应用程序起名oo4o

2)在Coo4oApp 类中BOOL Coo4oApp::InitInstance()函数中调用 OStartup();  在int Coo4oApp::ExitInstance()调用 OShutdown(); 

3)如果在Coo4oApp 类中没发现 ExitInstance() 函数,就在类视图中右键类,属性 - 重写 找到,添加就可以了

4)在对话框中添加一个按钮事件:void Coo4oDlg::OnBnClickedOk()

代码如下:

void Coo4oDlg::OnBnClickedOk()
{
	ODatabase odb;
	const char* pszDB = "staffmanage";
	const char* pszUser = "scott";
	const char* pszPSW = "123";
	oresult ors = odb.Open(pszDB,pszUser,pszPSW);
	ODynaset odyn;
	if(!odb.IsOpen())
	{
		const char *m_errortext = odb.GetErrorText();
		MessageBox(_T("连接错误"),_T("错误"),MB_OK|MB_ICONERROR);		
		return ;
	}
	OBinder oBind;
	oresult oRes = oBind.Open(odb,"select * from staff");
	if (!oBind.IsOpen())
	{
		MessageBox(_T("执行sql语句失败"));
		return ;
	}
	odyn = oBind.GetDynaset();
	if (odyn.IsEOF())
	{
		odyn.MoveLast();
		return;
	}

	OValue ov0,ov1,ov2,ov3,ov4,ov5;
	oRes = odyn.GetFieldValue("ID",&ov0);
	oRes = odyn.GetFieldValue("name",&ov1);
	oRes = odyn.GetFieldValue("sex",&ov2);
	oRes = odyn.GetFieldValue("password",&ov3);
	oRes = odyn.GetFieldValue("phone",&ov4);
	if (!oRes)
	{
		CString s;
		wchar_t* pszId = NULL;
		wchar_t* pszName = NULL;
		wchar_t* pszSex = NULL;
		wchar_t* pszPassword = NULL;
		wchar_t* pszPhone = NULL;
		multiToUnicode(ov0,pszId);
		multiToUnicode(ov1,pszName);
		multiToUnicode(ov2,pszSex);
		multiToUnicode(ov3,pszPassword);
		multiToUnicode(ov4,pszPhone);
		s.Format(_T("%s %s %s %s"),pszId,pszName,pszSex,pszPassword,pszPhone);
		MessageBox(s);
		if (pszId != NULL)
		{
			delete []pszId;
		}
		if (pszName != NULL)
		{
			delete []pszName;
		}
		if (pszSex != NULL)
		{
			delete []pszSex;
		}
		if (pszPassword != NULL)
		{
			delete []pszPassword;
		}
		if (pszPhone != NULL)
		{
			delete []pszPhone;
		}
	}
}


5)其中有一段多字符集转Unicode 代码如下

bool multiToUnicode(const char* multiText, wchar_t*& unicodeText)  
{  
	if (0 == strlen(multiText))  
	{
		unicodeText = NULL;
		return true;  
	}  

	//先获取转换后字符串所需空间  
	int size = ::MultiByteToWideChar(CP_ACP, 0, multiText, -1, NULL, 0);  
	if (0 == size)  
	{  
		return false;  
	}  

	//分配空间,进行转换  
	unicodeText = new wchar_t[size + 1];  
	::ZeroMemory(unicodeText, (size + 1) * sizeof(wchar_t));  
	if (0 == ::MultiByteToWideChar(CP_ACP, 0, multiText, -1, unicodeText, size + 1))  
	{  
		delete[] unicodeText;  
		return false;  
	}

	return true;  
} 
6)如果你还需要Unicode转多字符集,代码如下:

bool unicodeToMulti(LPCWSTR& unicodeText, char*& multiText)  
{

	if (0 == _tcslen(unicodeText))  
	{
		multiText = NULL;
		return true;  
	}  

	//先获取转换后字符串所需空间  
	int size = ::WideCharToMultiByte(CP_ACP, 0, unicodeText, -1, NULL, 0, NULL, NULL);  
	if (0 == size)  
	{  
		return false;  
	}  

	//分配空间,进行转换  
	multiText = new char[size + 1];  
	::ZeroMemory(multiText, (size + 1) * sizeof(char));  
	if (0 == ::WideCharToMultiByte(CP_ACP, 0, unicodeText, -1, multiText, size + 1, NULL, NULL))  
	{  
		delete[] multiText;  
		return false;  
	}
	return true;  
}


至此Oracle的基本操作就完成了,其他的leave for u

源代码可以到这里下载 点击打开链接

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值