使用cdatagrid的简单有关问题.从ActiveX Controls添加的DATAGRID.绑定数据库的有关问题.麻烦看下.错在哪
使用cdatagrid的简单问题.从ActiveX Controls添加的DATAGRID.绑定数据库的问题.麻烦看下.错在哪?
以下代码不行.直接出错.请给点使用cdatagrid绑定数据库的详细的代码
//使用datagrid
CoInitialize(NULL);
_ConnectionPtr pConn(__uuidof(Connection));
_RecordsetPtr pRst(__uuidof(Recordset));
_CommandPtr pCmd(__uuidof(Command));
CDataGrid m_ctrlDG;//DataGrid控件对象
pConn-> ConnectionString= "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=sproin ";
pConn-> Open( " ", "sa ", "123a ",adConnectUnspecified);
pCmd-> put_ActiveConnection(_variant_t((IDispatch*)pConn));
pCmd-> CommandText= "select * from grb ";
pRst=pCmd-> Execute(NULL,NULL,adCmdText);
m_ctrlDG.SetRefDataSource((LPUNKNOW)pRst.GetRecordset());
pRst-> Close();
pConn-> Close();
pCmd.Release();
pRst.Release();
pConn.Release();
CoUninitialize();
//使用datagrid
------解决方案--------------------
BOOL CDlgRecordset::QueryRecord()
{
_CommandPtr cmd;
_RecordsetPtr rs;
_ConnectionPtr conn;
_variant_t vra;
VARIANT *vt1 = NULL;
try
{
/* cmd.CreateInstance( __uuidof(Command));
rs.CreateInstance(__uuidof(Recordset));
conn.CreateInstance(__uuidof(Connection));*/
UpdateData(TRUE);
theApp.m_pConnection-> PutCursorLocation(adUseClient);
/* conn-> CursorLocation = adUseClient;
conn-> Open(_bstr_t( theApp.m_pConnection.GetInterfacePtr() ), L " ", L " ", -1);
cmd-> ActiveConnection = conn;
cmd-> CommandText = (_bstr_t) m_strQuery;
cmd-> CommandType = adCmdText;
rs = cmd-> Execute(&vra,vt1, adCmdText);*/
/*rs-> PutRefActiveConnection(theApp.m_pConnection);
rs-> Open((_bstr_t)m_strQuery,
theApp.m_pConnection.GetInterfacePtr(),
adOpenDynamic,
adLockOptimistic,
adCmdText);*/
/// ((CTestDllApp*)(&theApp))-> m_pConnection
/// m_pRecordset.CreateInstance(__uuidof(Recordset));
/* m_pRecordset-> Open((_bstr_t)m_strQuery,
_variant_t((IDispatch*)theApp.m_pConnection, TRUE),
adOpenStatic,
adLockOptimistic,
adCmdText);*/
if(m_pRecordset-> State==1)
{
m_pRecordset-> Close();
}
m_pRecordset-> Open((_bstr_t)m_strQuery,
theApp.m_pConnection.GetInterfacePtr(),//»ñÈ¡¿â½Ó¿âµÄIDispatchÖ¸Õë
adOpenStatic,
adLockOptimistic,
adCmdText);
/* m_DataGrid.SetRefDataSource(NULL);
m_DataGrid.SetRefDataSource((LPUNKNOWN)m_pRecordset);
m_DataGrid.Refresh();*/
}
catch (_com_error &e)
{
::MessageBox(NULL,e.Description(), "Ìáʾ ",MB_OK);
}
m_DataGrid.SetRefDataSource((LPUNKNOWN)m_pRecordset);
m_DataGrid.Refresh();
UpdateData(FALSE);
//m_pRecordset-> Close();
return true;
}
以下代码不行.直接出错.请给点使用cdatagrid绑定数据库的详细的代码
//使用datagrid
CoInitialize(NULL);
_ConnectionPtr pConn(__uuidof(Connection));
_RecordsetPtr pRst(__uuidof(Recordset));
_CommandPtr pCmd(__uuidof(Command));
CDataGrid m_ctrlDG;//DataGrid控件对象
pConn-> ConnectionString= "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=sa;Initial Catalog=sproin ";
pConn-> Open( " ", "sa ", "123a ",adConnectUnspecified);
pCmd-> put_ActiveConnection(_variant_t((IDispatch*)pConn));
pCmd-> CommandText= "select * from grb ";
pRst=pCmd-> Execute(NULL,NULL,adCmdText);
m_ctrlDG.SetRefDataSource((LPUNKNOW)pRst.GetRecordset());
pRst-> Close();
pConn-> Close();
pCmd.Release();
pRst.Release();
pConn.Release();
CoUninitialize();
//使用datagrid
------解决方案--------------------
BOOL CDlgRecordset::QueryRecord()
{
_CommandPtr cmd;
_RecordsetPtr rs;
_ConnectionPtr conn;
_variant_t vra;
VARIANT *vt1 = NULL;
try
{
/* cmd.CreateInstance( __uuidof(Command));
rs.CreateInstance(__uuidof(Recordset));
conn.CreateInstance(__uuidof(Connection));*/
UpdateData(TRUE);
theApp.m_pConnection-> PutCursorLocation(adUseClient);
/* conn-> CursorLocation = adUseClient;
conn-> Open(_bstr_t( theApp.m_pConnection.GetInterfacePtr() ), L " ", L " ", -1);
cmd-> ActiveConnection = conn;
cmd-> CommandText = (_bstr_t) m_strQuery;
cmd-> CommandType = adCmdText;
rs = cmd-> Execute(&vra,vt1, adCmdText);*/
/*rs-> PutRefActiveConnection(theApp.m_pConnection);
rs-> Open((_bstr_t)m_strQuery,
theApp.m_pConnection.GetInterfacePtr(),
adOpenDynamic,
adLockOptimistic,
adCmdText);*/
/// ((CTestDllApp*)(&theApp))-> m_pConnection
/// m_pRecordset.CreateInstance(__uuidof(Recordset));
/* m_pRecordset-> Open((_bstr_t)m_strQuery,
_variant_t((IDispatch*)theApp.m_pConnection, TRUE),
adOpenStatic,
adLockOptimistic,
adCmdText);*/
if(m_pRecordset-> State==1)
{
m_pRecordset-> Close();
}
m_pRecordset-> Open((_bstr_t)m_strQuery,
theApp.m_pConnection.GetInterfacePtr(),//»ñÈ¡¿â½Ó¿âµÄIDispatchÖ¸Õë
adOpenStatic,
adLockOptimistic,
adCmdText);
/* m_DataGrid.SetRefDataSource(NULL);
m_DataGrid.SetRefDataSource((LPUNKNOWN)m_pRecordset);
m_DataGrid.Refresh();*/
}
catch (_com_error &e)
{
::MessageBox(NULL,e.Description(), "Ìáʾ ",MB_OK);
}
m_DataGrid.SetRefDataSource((LPUNKNOWN)m_pRecordset);
m_DataGrid.Refresh();
UpdateData(FALSE);
//m_pRecordset-> Close();
return true;
}