_ConnectionPtr m_DBCnt;
m_DBCnt.CreateInstance(__uuidof(Connection));
//第一种打开数据库的方式:通过ODBC数据源
m_DBCnt->Open("DSN=db;UID='';PWD=''","","",-1);
//第二种打开数据库的方式:通过Jet引擎
//m_DBCnt->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db.mdb","","",adModeUnknown);
_RecordsetPtr MySet;
MySet.CreateInstance(__uuidof(Recordset));
CString sel("SELECT * FROM city");
MySet->Open(sel.AllocSysString(),m_DBCnt.GetInterfacePtr(),adOpenStatic,adLockPessimistic ,adCmdText);
m_grid.SetRefDataSource(MySet);
问题:
为什么用第二种方式打开的数据库在datagrid中不能显示?????
8 个解决方案
#1
MySet->Open(sel.AllocSysString(),m_DBCnt.GetInterfacePtr(),adOpenStatic,adLockPessimistic ,adCmdText);
m_grid.SetRefDataSource(MySet);
你把上面两句改成下面的样子试试看:
MySet->Open(sel.AllocSysString(),_variant_t((IDispatch*)m_DBCnt,true),adOpenDynamic,adLockOptimistic,adCmdUnknown);
m_grid.SetRefDataSource(NULL);
m_grid.SetRefDataSource( (LPUNKNOWN) MySet);
m_grid.Refresh();
m_grid.SetRefDataSource(MySet);
你把上面两句改成下面的样子试试看:
MySet->Open(sel.AllocSysString(),_variant_t((IDispatch*)m_DBCnt,true),adOpenDynamic,adLockOptimistic,adCmdUnknown);
m_grid.SetRefDataSource(NULL);
m_grid.SetRefDataSource( (LPUNKNOWN) MySet);
m_grid.Refresh();
#2
m_DBCnt->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db.mdb","","",adModeUnknown);
---------------------------------------------------
1.db.mdb是在你的当前目录下面吗?
2.MySet->Open((LPTSTR)sel.GetBuffer(130),_variant_t((IDispatch m_DBCnt),true),
adOpenDynamic,adLockPessimistic,adCmdText);
---------------------------------------------------
1.db.mdb是在你的当前目录下面吗?
2.MySet->Open((LPTSTR)sel.GetBuffer(130),_variant_t((IDispatch m_DBCnt),true),
adOpenDynamic,adLockPessimistic,adCmdText);
#3
//第二种打开数据库的方式:通过Jet引擎
//m_DBCnt->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db.mdb","","",adModeUnknown);
Data Source里加数据库的绝对路径!
//m_DBCnt->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db.mdb","","",adModeUnknown);
Data Source里加数据库的绝对路径!
#4
补充一下:
用第二种打开数据库的方式:通过Jet引擎。打开的记录集中是有数据的,只是不能在datagrid中显示。
用绝对路径我也试过了,不行!
用第二种打开数据库的方式:通过Jet引擎。打开的记录集中是有数据的,只是不能在datagrid中显示。
用绝对路径我也试过了,不行!
#5
谢谢大家的回复,谢谢!
#6
提供一个资料
在http://www.vckbase.net/document/viewdoc/?id=1164有一篇介绍的文章,他用的jet引擎就能显示,大家可以参考一下他的文章,我看了,但是仍然没有找到毛病.
在http://www.vckbase.net/document/viewdoc/?id=1164有一篇介绍的文章,他用的jet引擎就能显示,大家可以参考一下他的文章,我看了,但是仍然没有找到毛病.
#7
你再新建一个datagrid,把记录集与这个新的datagrid绑定试试看。。
#8
谢谢大家的捧场
#1
MySet->Open(sel.AllocSysString(),m_DBCnt.GetInterfacePtr(),adOpenStatic,adLockPessimistic ,adCmdText);
m_grid.SetRefDataSource(MySet);
你把上面两句改成下面的样子试试看:
MySet->Open(sel.AllocSysString(),_variant_t((IDispatch*)m_DBCnt,true),adOpenDynamic,adLockOptimistic,adCmdUnknown);
m_grid.SetRefDataSource(NULL);
m_grid.SetRefDataSource( (LPUNKNOWN) MySet);
m_grid.Refresh();
m_grid.SetRefDataSource(MySet);
你把上面两句改成下面的样子试试看:
MySet->Open(sel.AllocSysString(),_variant_t((IDispatch*)m_DBCnt,true),adOpenDynamic,adLockOptimistic,adCmdUnknown);
m_grid.SetRefDataSource(NULL);
m_grid.SetRefDataSource( (LPUNKNOWN) MySet);
m_grid.Refresh();
#2
m_DBCnt->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db.mdb","","",adModeUnknown);
---------------------------------------------------
1.db.mdb是在你的当前目录下面吗?
2.MySet->Open((LPTSTR)sel.GetBuffer(130),_variant_t((IDispatch m_DBCnt),true),
adOpenDynamic,adLockPessimistic,adCmdText);
---------------------------------------------------
1.db.mdb是在你的当前目录下面吗?
2.MySet->Open((LPTSTR)sel.GetBuffer(130),_variant_t((IDispatch m_DBCnt),true),
adOpenDynamic,adLockPessimistic,adCmdText);
#3
//第二种打开数据库的方式:通过Jet引擎
//m_DBCnt->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db.mdb","","",adModeUnknown);
Data Source里加数据库的绝对路径!
//m_DBCnt->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db.mdb","","",adModeUnknown);
Data Source里加数据库的绝对路径!
#4
补充一下:
用第二种打开数据库的方式:通过Jet引擎。打开的记录集中是有数据的,只是不能在datagrid中显示。
用绝对路径我也试过了,不行!
用第二种打开数据库的方式:通过Jet引擎。打开的记录集中是有数据的,只是不能在datagrid中显示。
用绝对路径我也试过了,不行!
#5
谢谢大家的回复,谢谢!
#6
提供一个资料
在http://www.vckbase.net/document/viewdoc/?id=1164有一篇介绍的文章,他用的jet引擎就能显示,大家可以参考一下他的文章,我看了,但是仍然没有找到毛病.
在http://www.vckbase.net/document/viewdoc/?id=1164有一篇介绍的文章,他用的jet引擎就能显示,大家可以参考一下他的文章,我看了,但是仍然没有找到毛病.
#7
你再新建一个datagrid,把记录集与这个新的datagrid绑定试试看。。
#8
谢谢大家的捧场