高分求救!!!关于数据库查询的问题(在线等待!)
小弟在编写关于数据库的一个程序,遇到以下问题:
在执行下条语句时报错:Invalid descriptor index
m_recordset->Open(AFX_DB_USE_DEFAULT_TYPE,_T( "Select ID from 基本信息" ));
我查了好多资料,不知怎样解决,求救高手帮忙解决,小弟不胜感激!!!
具体代码如下:
BOOL InDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
CBaseSet *m_recordset=new CBaseSet(&m_database);
CString str,strSQL;
m_recordset->Open(AFX_DB_USE_DEFAULT_TYPE,_T( "Select ID from 基本信息" ));
while(!m_recordset->IsEOF()){
m_recordset->GetFieldValue("ID",str);
m_combo_inid.AddString (str);
m_recordset->MoveNext();
}
m_recordset->Close();
return TRUE;
// return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
问题点数:100、回复次数:10Top
1 楼coyer(test)回复于 2003-03-01 12:18:48 得分 0
错误的描述不完全,猜测如下:
1 你的数据库是什么,access?有一个权限的问题,有可能你没有权限,这条语句当然会出错
2 你的数据库中有没有“基本信息”这个表?某些老版本的数据库或者驱动程序不支持中文的表名。必须用英文。
3 初始化问题,m_pRecordset.CreateInstance("ADODB.Recordset");Top
2 楼coyer(test)回复于 2003-03-01 12:20:04 得分 0
m_pRecordset.CreateInstance("ADODB.Recordset");
这句放在open之前。Top
3 楼white_black_cat(白猫)回复于 2003-03-01 12:24:56 得分 0
我的数据库为SQL server2000
用的是ODBC接口
CBaseSet 为CRecordset派生类Top
4 楼small_wei(small)回复于 2003-03-01 16:47:55 得分 0
id 是SQL server2000的关键字
Select [ID] from 基本信息Top
5 楼tttt415(tttt415)回复于 2003-03-01 16:53:25 得分 0
最根本的方法,还是你自己用DEBUG方式跟踪一下MFC类库,MFC的数据库类库和MS的ACCESS结合最好,很多问题是发生在类库本身无法兼容各种数据库引起的。你跟踪到错误的地方后,使用其他的方法避免错误就可以了。
当然另外一个推荐你的方法是找一个其他的类库,这些类库往往短小精悍,也可以满足大部分的应用。尤其是程序员大本营,是一个好东东。Top
6 楼mbj()回复于 2003-03-01 21:30:50 得分 20
用的不是ADO,是DAO
Top
7 楼littlechen(littlechen)回复于 2003-03-01 21:44:54 得分 0
去掉中文试试看,他妈的,都是EnglishTop
8 楼white_black_cat(白猫)回复于 2003-03-04 01:46:35 得分 0
问题以解决用的是下面这种方法:
m_recordset->Open(AFX_DB_USE_DEFAULT_TYPE,_T( "select * from 基
while(!m_recordset->IsEOF()){
str=m_recordset->m___ID ;
m_combo_inid.AddString (str);
m_recordset->MoveNext();
}
不过我还是想知道问题中的方法解决这个问题,本贴暂时不结,欢迎大家继续参与!!!Top
9 楼52001314(不当程序员了)回复于 2003-03-14 16:18:55 得分 50
可能是在这句出错.m_recordset->GetFieldValue("ID",str);
试试m_recordset->GetFieldValue((short)0,str);
或者:
m_recordset->Open(AFX_DB_USE_DEFAULT_TYPE,_T( "Select ID as MyID from 基本信息" ));
m_recordset->GetFieldValue("MyID",str);
Top
10 楼52001314(不当程序员了)回复于 2003-03-14 16:23:02 得分 30
哦,刚才看错了。你用的不是CRecordset,而是派生类.
CBaseSet是不是对应基本信息这个表?
我用派生类都是直接Open的。select field1,field2会对派生类的某些字段没有赋值。
是不是只能用select *?
你单步调试看看,如果Open的时候出错应该是这个问题。Top




