首页 - 新闻 - vs2010中的数据库控件_vs获取Oracle数据库中表的值,vs2010MFCActiveX控件,连接ORACLE数据库...

vs2010中的数据库控件_vs获取Oracle数据库中表的值,vs2010MFCActiveX控件,连接ORACLE数据库...

2023-09-15 18:33

在头文件类中先定义这些变量,方便在操作数据库的成员函数中使用。

_ConnectionPtr pConn;//连接指针

_RecordsetPtr pRst;//记录集指针

_CommandPtr pCmd;//

_bstr_t mStrSQL;//查询语句

_bstr_t mStrSQL1;//查询语句

CString strColName;//字段名字

HRESULT hr;//查询结果判断

Fields* fields;//

HRESULT hr1;

Fields* fields1;

CDataGrid m_dbGrid;//定义一个DataGrid对象

long ColCount;//字段个数

连接数据库,pConn->ConnectionString的值可以用UDL文件测试连接下看能不能连上,然后用文本文件打开,把连接字符串粘上即可。

CoInitialize(NULL);//初始化COM运行环境

pConn = NULL;

pRst = NULL;

pCmd = NULL;

try

{

pConn.CreateInstance(__uuidof(Connection));

pConn->ConnectionString ="Provider=www.gsm-guard.net.1;Password=photo;Persist Security Info=True;User ID=photo;Data Source=PHOTO";

pConn->Open("","","",adConnectUnspecified);

}

catch(...)

{

MessageBox(_T("连接数据库失败,请重连"),_T("警告"),0);

}

显示表名在combo中,sql语句:SELECT TABLE_NAME FROM USER_ALL_TABLES;是查询所有用户表的,

SELECT TABLE_NAME FROM ALL_ALL_TABLES;是查询包括系统表在内的所有表

try

{

pRst1.CreateInstance("ADODB.Recordset");//创建pRst1对象

pRst1->CursorLocation=adUseClient;

mStrSQL1 = "SELECT TABLE_NAME FROM USER_ALL_TABLES";

pRst1->Open(mStrSQL1,pConn.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);

while(!pRst1->rsEOF)//当记录集pRst1后面还有值

{

CString str = pRst1->GetCollect("TABLE_NAME");//表名

m_combo1.AddString(str);

pRst1->MoveNext();

}

}

catch(...)

{

MessageBox(_T("显示表名失败"),_T("警告"),0);

}

显示字段在combo中

try

{

pRst.CreateInstance(__uuidof(Recordset));

pRst.CreateInstance("ADODB.Recordset");//创建pRst对象

pRst->CursorLocation=adUseClient; //游标的位置出现.不加这句会出现The rowset is not bookmarkable运行错误

mStrSQL = "select *from YW_RYXXB";

pRst->Open(mStrSQL,pConn.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);

hr = pRst->get_Fields (&fields); //得到记录集的字段集和

if(SUCCEEDED(hr))

{

ColCount = pRst->Fields->Count;//得到的字段个数

}

for(j=0;j

{

CString strName=(char*)_bstr_t(pRst->Fields->Item[j]->Name);//字段名

m_Combo7.AddString(strName);

m_Combo8.AddString(strName);

m_Combo9.AddString(strName);

m_Combo10.AddString(strName);

m_Combo11.AddString(strName);

m_Combo12.AddString(strName);

}

if(SUCCEEDED(hr))

{

fields->Release();

}

}

catch(...)

{

MessageBox(_T("连接字段失败"),_T("警告"),0);

}

把连接的表显示在DataGrid中

m_dbGrid1.SetRefDataSource(NULL);

m_dbGrid1.SetRefDataSource((LPUNKNOWN)pRst);

m_dbGrid1.Refresh();

在ActiveX中如何使用DataGrid,见如下连接

对应VS2010连接数据库时,发现没有oleDbCommand或oleDbConnection控件。

解决方法:

??????? 工具-》选择工具项 找到所需控件。选中点击OK即可。

?? ??? 若仍然没有看到所需控件。则 工具-》选择工具项 点击重置按钮。重置控件后,再重新找到所需控件,点击确定。

????? 注意:所需控件有可能不是添加到数据控件中,请自己看看所有控件是否以添加成功。

在头文件类中先定义这些变量,方便在操作数据库的成员函数中使用。

_ConnectionPtr pConn;//连接指针

_RecordsetPtr pRst;//记录集指针

_CommandPtr pCmd;//

_bstr_t mStrSQL;//查询语句

_bstr_t mStrSQL1;//查询语句

CString strColName;//字段名字

HRESULT hr;//查询结果判断

Fields* fields;//

HRESULT hr1;

Fields* fields1;

CDataGrid m_dbGrid;//定义一个DataGrid对象

long ColCount;//字段个数

连接数据库,pConn->ConnectionString的值可以用UDL文件测试连接下看能不能连上,然后用文本文件打开,把连接字符串粘上即可。

CoInitialize(NULL);//初始化COM运行环境

pConn = NULL;

pRst = NULL;

pCmd = NULL;

try

{

pConn.CreateInstance(__uuidof(Connection));

pConn->ConnectionString ="Provider=www.gsm-guard.net.1;Password=photo;Persist Security Info=True;User ID=photo;Data Source=PHOTO";

pConn->Open("","","",adConnectUnspecified);

}

catch(...)

{

MessageBox(_T("连接数据库失败,请重连"),_T("警告"),0);

}

显示表名在combo中,sql语句:SELECT TABLE_NAME FROM USER_ALL_TABLES;是查询所有用户表的,

SELECT TABLE_NAME FROM ALL_ALL_TABLES;是查询包括系统表在内的所有表

try

{

pRst1.CreateInstance("ADODB.Recordset");//创建pRst1对象

pRst1->CursorLocation=adUseClient;

mStrSQL1 = "SELECT TABLE_NAME FROM USER_ALL_TABLES";

pRst1->Open(mStrSQL1,pConn.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);

while(!pRst1->rsEOF)//当记录集pRst1后面还有值

{

CString str = pRst1->GetCollect("TABLE_NAME");//表名

m_combo1.AddString(str);

pRst1->MoveNext();

}

}

catch(...)

{

MessageBox(_T("显示表名失败"),_T("警告"),0);

}

显示字段在combo中

try

{

pRst.CreateInstance(__uuidof(Recordset));

pRst.CreateInstance("ADODB.Recordset");//创建pRst对象

pRst->CursorLocation=adUseClient; //游标的位置出现.不加这句会出现The rowset is not bookmarkable运行错误

mStrSQL = "select *from YW_RYXXB";

pRst->Open(mStrSQL,pConn.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);

hr = pRst->get_Fields (&fields); //得到记录集的字段集和

if(SUCCEEDED(hr))

{

ColCount = pRst->Fields->Count;//得到的字段个数

}

for(j=0;j

{

CString strName=(char*)_bstr_t(pRst->Fields->Item[j]->Name);//字段名

m_Combo7.AddString(strName);

m_Combo8.AddString(strName);

m_Combo9.AddString(strName);

m_Combo10.AddString(strName);

m_Combo11.AddString(strName);

m_Combo12.AddString(strName);

}

if(SUCCEEDED(hr))

{

fields->Release();

}

}

catch(...)

{

MessageBox(_T("连接字段失败"),_T("警告"),0);

}

把连接的表显示在DataGrid中

m_dbGrid1.SetRefDataSource(NULL);

m_dbGrid1.SetRefDataSource((LPUNKNOWN)pRst);

m_dbGrid1.Refresh();

在ActiveX中如何使用DataGrid,见如下连接

http://www.gsm-guard.net/u012702039/article/details/18661091