使用vc+odbc来操作ms-sql2000数据库在删除时出问题了CString strSql;
strSql="SELECT * FROM PIC WHERE 名称='"+KeyWord+"'";
if(IsOpen())
Close();
try{
Open(CRecordset::dynamic,strSql);
if(IsBOF()|IsEOF())
{
AfxMessageBox("没有找到要删除的数据");
return 0;
}
Delete();
return 1;
}
catch(CDBException *e)
{
e->ReportError();
e->Delete();
Close();
return 0;
}该代码在继承的CRecordset类中,每当执行到Open函数是,就会抛出“无效的描述符索引”这个错误,数据也无法被删除。
请问这是怎么回事啊?该怎么解决?
strSql="SELECT * FROM PIC WHERE 名称='"+KeyWord+"'";
if(IsOpen())
Close();
try{
Open(CRecordset::dynamic,strSql);
if(IsBOF()|IsEOF())
{
AfxMessageBox("没有找到要删除的数据");
return 0;
}
Delete();
return 1;
}
catch(CDBException *e)
{
e->ReportError();
e->Delete();
Close();
return 0;
}该代码在继承的CRecordset类中,每当执行到Open函数是,就会抛出“无效的描述符索引”这个错误,数据也无法被删除。
请问这是怎么回事啊?该怎么解决?
strSql="SELECT * FROM PIC WHERE 名称='"+KeyWord+"'";
有字段名称是"名称"的么?
KeyWord值是多少?什么类型?
KeyWord 是CString 类的KeyWord的值是外部调用是传进来的
感觉没有什么问题,但不知道为什么就是有错
SELECT * FROM PIC DELETE FROM PIC WHERE 名称='xxx'虽然也能删除数据,但一样会抛出 “无效的描述符索引” 这个错误
有这样用的吗?
其次,strSql="SELECT * FROM PIC WHERE 名称='"+KeyWord+"'";中KeyWord的类型要注意;
最后,把所有"xxx"变成_T("xxx")。
Open(CRecordset::dynaset,strSql);
打开的时候,就能找到数据,但不能进行删除,提示说记录集只读但如果我使用
Open(CRecordset::dynamic,strSql);
打开的时候,,就会出错,提示 无效的描述符索引