1、创建新的测试数据表,或者可以选择要测试的现有表数据。这只是测试字符串连接,不会影响数据内容。从T_BASE_PROVINCE t中选择*,其中t.id = 1。
2、首先介绍下一个||满足连接,||可以一次连接多个字符串,选择t.PROVINCEID ||来自T_BASE_PROVINCE的t.PROVINCE t其中t.id = 1。
3、由||连接除了字段和字段之间的字符串连接之外,还可以将方法连接到常量字符串选择'省:'||来自T_BASE_PROVINCE的t.PROVINCE t其中t.id = 1。
4、您还可以使用CONCAT函数连接到字符串,传入函数字符串1和字符串2,两个参数。参数的方式也支持常量字符串从T_BASE_PROVINCE t中选择CONCAT(t.PROVINCEID,t.PROVINCE),其中t.id = 1。
5、如果要连接的字符串有两个以上的参数,如下例所示,则有4个字符串连接。运行后,测试发现异常,参数无效。从T_BASE_PROVINCE t中选择CONCAT('省ID:',t.PROVINCEID,'省:',t.PROVINCE),其中t.id = 1- ERROR ORA-00909:参数数量无效。
6、对于上述问题,如果连接参数大于2,则可以选择CONCAT嵌套方法。从T_BASE_PROVINCE t中选择CONCAT(CONCAT('省ID:',t.PROVINCEID),'省:'),t.PROVINCE),其中t.id = 1。
tnsnames.ora找这个文件,大概是在...network\admin\tnsnames.ora
用记事本编辑该文件
orcl9i =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.50.1.8 )(PORT = 1521))
)
(CONNECT_DATA =(SERVICE_NAME = orcl)
)
)
SERVICE_NAME是9i的实例服务名,默认是orcl
另外就是端口了,默认是1521
orcl9i这个是别名,使用sql*plus时, conn system/manage@orcl9i
tnsnames.ora这个文件也可使用工具配置,但是这个工具忘了是什么了,好像是net manager吧。
客户端不需要监听的,监听是服务端才有的
另外如果是新建的用户,默认是没有权限登录oracle服务端的,需要授权。
grant connect, resources to new_user
在利用ado连接数据库之前,需要做一些准备1.用#import指令引入ADO类型库
我们在stdafx.h中加入如下语句:
#import "c:program filescommon filessystemadomsado15.dll" no_namespace rename("EOF","adoEOF") 。
这一语句有何作用呢?其最终作用同我们熟悉的#i nclude类似,编译的时候系统会为我们生成msado15.tlh,ado15.tli两个C++头文件来定义ADO库。
几点说明:
(1) 您的环境中msado15.dll不一定在这个目录下,请按实际情况修改
(2) 在编译的时候肯能会出现如下警告,对此微软在MSDN中作了说明,并建议我们不要理会这个警告。msado15.tlh(405) : warning C4146: unary minus operator applied to unsigned type, result still unsigned
2、初始化OLE/COM库环境
必须注意的是,ADO库是一组COM动态库,这意味应用程序在调用ADO前,必须初始化OLE/COM库环境。在MFC应用程序里,一个比较好的方法是在应用程序主类的InitInstance成员函数里初始化OLE/COM库环境。
BOOL CMyAdoTestApp::InitInstance()
{
if(!AfxOleInit())//这就是初始化COM库
{
AfxMessageBox(“OLE初始化出错!”)
return FALSE
}
}
3.ADO库包含三个基本接口:_ConnectionPtr接口、_CommandPtr接口和_RecordsetPtr接口。与数据库的连接就是用_ConnectionPtr接口,它的连接字符串可以是自己直接写,也可以指向一个ODBC DSN。以下的例子都测试通过,顺便写了SQL Server的例子。
BOOL CTestconDlg::ConnectDatabase()
{
CString m_server,m_data,m_uid,m_pwd
m_server="192.168.0.24"//服务器ip或名称
m_data="crmdb"//ODBC数据源
m_uid="njcrm"//用户名
m_pwd="crmdbo"//密码
BOOL retFt=false
HRESULT hr
try
{
hr = m_pConnection.CreateInstance("ADODB.Connection")///创建Connection对象
if(SUCCEEDED(hr))
{
_bstr_t connStr
m_pConnection->CursorLocation=adUseClient
//begin---------------Oracle ODBC 配置数据源-------------------------------------
//控制面板->管理工具->数据源(ODBC)->系统DNS->添加->Microsoft ODBC for Oracle->完成->配置……
// connStr="DSN="+m_data
// m_pConnection->Open(_bstr_t(connStr),(_bstr_t)m_uid,(_bstr_t)m_pwd,adConnectUnspecified)
//end---------------Oracle ODBC 配置数据源---------------------------------------
//begin---------------Oracle 标准安全级别---------------------------------------
// connStr="Provider=OraOLEDB.OracleUser ID=njcrmPassword=crmdboData Source=192.168.0.24"
// m_pConnection->Open(_bstr_t(connStr),(_bstr_t)_T(""),(_bstr_t)_T(""),adConnectUnspecified)
//end---------------Oracle 标准安全级别---------------------------------------
//begin---------------Oracle 微软格式----------------------------------
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)