请教如何使用VC在客户端连接服务器端的ORACLE的表?谢谢!
解决方案 »
- who来帮个忙阿,很简单的问题
- 错误修改:left of '->imageData' must point to class/struct/union
- vc程序关闭后在进程管理器中要过大概半分钟才会退出,这一般是什么原因造成的
- windows编程高手请进
- 在WIN98下面如何由盘符(如:C: D:)判断该分区在哪块硬盘上?
- 读取3ds文件的一个问题
- 请问怎样设置installshield,使得程序安装后出现在开始菜单和桌面?
- 谁能给我解析一下RUNMODALLOOP(),请说的清楚一些?
- 一个IOCP莫名崩溃的问题,求高手指教
- 请问各位大虾:那里有有关WinCE编程的资料呀?
- 工作丢失,心情不好,散分!
- ●●●是不是分数不够呀? 急呀!!!●●●
HRESULT hr;
CDBPropSet dbinit(DBPROPSET_DBINIT); dbinit.AddProperty(DBPROP_AUTH_USERID, cntDlg.m_strName);
dbinit.AddProperty(DBPROP_AUTH_PASSWORD, cntDlg.m_strPwd);
dbinit.AddProperty(DBPROP_AUTH_PERSIST_SENSITIVE_AUTHINFO, false);
dbinit.AddProperty(DBPROP_INIT_DATASOURCE, cntDlg.m_strServer);
dbinit.AddProperty(DBPROP_INIT_LCID, (long)2052);
dbinit.AddProperty(DBPROP_INIT_PROMPT, (short)4);
dbinit.AddProperty(DBPROP_INIT_TIMEOUT, (long)60);
dbinit.AddProperty(DBPROP_INIT_PROVIDERSTRING, OLESTR(""));
try
{
if (m_nDbType == DB_TYPE_ORACLE)
{
hr = m_DataSource.Open(_T("OraOLEDB.Oracle.1"), &dbinit);//打开数据源
}
else
{
dbinit.AddProperty(DBPROP_INIT_CATALOG, cntDlg.m_strDatabase); //Oracle不要求
hr = m_DataSource.Open(_T("SQLOLEDB.1"),&dbinit);//打开数据源
}
if (FAILED(hr))
{
throw;
}
//打开会话。
hr = m_session.Open(m_DataSource);
if(FAILED(hr))
{
m_DataSource.Close();
throw;
}
}
catch(...)
{
GetLastError(m_szLastErrorDesc);
SetStatus(m_szLastErrorDesc);
}
next
CDBPropSet propset(DBPROPSET_ROWSET);//DBSCHEMA_PROCEDURES
propset.AddProperty(DBPROP_IRowsetChange, true);
propset.AddProperty(ORAPROP_PLSQLRSet, true);
propset.AddProperty(DBPROP_CANSCROLLBACKWARDS, true);
propset.AddProperty(DBPROP_CANFETCHBACKWARDS, true);
propset.AddProperty(DBPROP_UPDATABILITY, DBPROPVAL_UP_INSERT | DBPROPVAL_UP_CHANGE | DBPROPVAL_UP_DELETE);
CCommand<CManualAccessor> rs;
HRESULT hr = rs.Open(m_session, pszSQL, &propset, NULL, DBGUID_DBSQL, FALSE);
try
{
if (rs.GetColumnInfo(&ulColumns, &pColumnInfo, &pStrings) != S_OK)
throw; struct MYBIND* pBind = new MYBIND[ulColumns];
rs.CreateAccessor(ulColumns, &pBind[0], sizeof(MYBIND)*ulColumns);
for (ULONG l=0; l<ulColumns; l++)
rs.AddBindEntry(l+1, DBTYPE_STR, sizeof(TCHAR)*40, &pBind[l].szValue,
NULL, &pBind[l].dwStatus);
rs.Bind(); ULONG ulFields = rs.GetColumnCount(); DeleteAllColumns();
for (int i = 1; i <= ulFields; i++)
{
m_ctrlList.InsertColumn(m_nColumnCount++, OLE2T(pColumnInfo[i-1].pwszName), LVCFMT_LEFT, 10*pColumnInfo[i-1].ulColumnSize);
}
Sleep(100);
while(rs.MoveNext() == S_OK)
{
m_ctrlList.InsertItem(m_nItems++, _T(""));
for (ULONG j=0; j< ulFields; j++)
{
if (pBind[j].dwStatus == DBSTATUS_S_ISNULL)
{
m_ctrlList.SetItemText(m_nItems - 1, j , _T("NULL"));
}
else
{
LPTSTR lpszString = pBind[j].szValue;
m_ctrlList.SetItemText(m_nItems - 1, j , lpszString);
}
}
}
delete pBind;
}
catch(...)
{
GetLastError(m_szLastErrorDesc);
SetStatus(m_szLastErrorDesc);
rs.Close();
return FALSE;
}
1.首先你的客户端机子要安装oracle客户端,
2.改 oracle/ora81/NETWORK/ADMIN/tnsnames.ora
加入
MYDSN=
(DESCRIPTION =NORA8
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 10.1.2.253;)(PORT = 这里填你的端口))
)
(CONNECT_DATA =
(SID=Scott)
)
)
3.然后在控制面板-〉管理工具->数据源中建立数据源
4.CDatabase database;
database.Open(("ODBC;DSN=;UID=Scott;PWD=tiger");CMySet m_set;
m_set.pDatabase=&database;
m_set.Open();
strCon = "Provider=OraOLEDB.Oracle.1;Password=tiger;Persist Security Info=True;User ID=scott;Data Source=orclserv";m_Adodc.SetConnectionString(strCon);
orclserv 同楼上