描述:查询 Meaning字段(备注型),用于存储 英语单词的意思,现在想要根据中文意思,查询意思相近的所有英语单词?
用 ... Meaning like '%关键字%' 和 ...Meaning like '*关键字*' 结果都不对。。请高手指点!
2. 利用->GetRecordCount() 为啥总是 =1 呢
代码如下:
//首先 ,通过CRecordset类派生出 CASet类 与 数据库的单词表 关联
class CASet : public CRecordset
{
....
}
//
......类的实现
//
//在APP头文件里定义:
CASet m_ASet;//供全局共同使用
//
//在需要调用的对话框头文件定义:
CASet *theASet;
//
void CYJWordDlg::OnBUTTONAllWORD() //查询所有词汇并输出
{
m_ListWord.ResetContent(); //列表框,用于显示所有单词
theASet = &theApp.m_ASet;
if (!theASet->IsOpen())
{
theASet->Open();
}
theASet->m_strFilter = "";//选择所有单词
theASet->Requery();
if (theASet->GetRecordCount()) //词库里的单词数量
{
int nCount = theASet->GetRecordCount();//这里一直 nCount=1 ???不明白
while (!theASet->IsEOF())
{
m_ListWord.AddString(theASet->m_Word);
theASet->MoveNext();
}
}
theASet->Close();
}
问题:这里的明明 m_strFilter = "",表示选择所有单词,而结果也是所有单词都输出了,
可nCount 为啥是1呢?不应该是 全部的单词数量吗
////
。。以上两个问题,请教大家,希望知道的给予指点,谢谢
8 个解决方案
#1
http://topic.csdn.net/u/20100907/23/ecf4483a-9809-4499-85e4-b360b088f4a1.html
这里测试下SQL语句是否如你所想的结果,如果结果是对的,推荐你换成 ADO。
这里测试下SQL语句是否如你所想的结果,如果结果是对的,推荐你换成 ADO。
#2
测试助手下不下来,重新给个下载地址吧
#3
好了,我测试了下,用这个ADO测试之后,确实没问题,难道是CRecordSet 的问题吗? 不过我还是想把这个问题搞明白,希望知道的能 给提点提点啊
#4
加上转意符号尝试下
"Meaning = \'%关键字%\'"
"Meaning = \'%关键字%\'"
#5
按照这样,确实可以,
太好了,现在第1问题已经解决了。
。。。下来,第2个问题,不晓得有没有人知道原因呢。
theASet->GetRecordCount() 为啥一直 =1 呢?
#6
你查询的方式不对。。。
这个呢?
"Meaning = \'%\'"
这个呢?
"Meaning = \'%\'"
#7
CRecordset::GetRecordCount 返回值看MSDN说的,有记录时1 无记录时0,想获得记录数目重复MoveNext统计
可以执行SQL语句来获取记录条数
可以执行SQL语句来获取记录条数
LONG GetRecordeCount(CDatabase *m_pDatabase)
{
long nCount = 0;
try
{
if(m_pDatabase && m_pDatabase->IsOpen())
{
CString cmdSQL = _T("");
cmdSQL = _T("SELECT COUNT(*) FROM youTabName WHERE youCondition");
CRecordset rsCount(m_pDatabase);
if(rsCount.Open(CRecordset::forwardOnly, cmdSQL, CRecordset::executeDirect))
{
CString strValue = _T("0");
if (!rsCount.IsEOF())
rsCount.GetFieldValue((short)0, strValue);
nCount = _ttol(strValue);
rsCount.Close();
}
}
}
catch(CDBException * e)
{
e->ReportError();
e->Delete();
}
return nCount;
}
#8
哦,可能我理解MSDN的 GetRecordCount()函数时理解错了,我以为 有的时候则返回记录数,没有则返回0
哎,从头到尾遍历一下算了,
哎,从头到尾遍历一下算了,
#1
http://topic.csdn.net/u/20100907/23/ecf4483a-9809-4499-85e4-b360b088f4a1.html
这里测试下SQL语句是否如你所想的结果,如果结果是对的,推荐你换成 ADO。
这里测试下SQL语句是否如你所想的结果,如果结果是对的,推荐你换成 ADO。
#2
测试助手下不下来,重新给个下载地址吧
#3
好了,我测试了下,用这个ADO测试之后,确实没问题,难道是CRecordSet 的问题吗? 不过我还是想把这个问题搞明白,希望知道的能 给提点提点啊
#4
加上转意符号尝试下
"Meaning = \'%关键字%\'"
"Meaning = \'%关键字%\'"
#5
按照这样,确实可以,
太好了,现在第1问题已经解决了。
。。。下来,第2个问题,不晓得有没有人知道原因呢。
theASet->GetRecordCount() 为啥一直 =1 呢?
#6
你查询的方式不对。。。
这个呢?
"Meaning = \'%\'"
这个呢?
"Meaning = \'%\'"
#7
CRecordset::GetRecordCount 返回值看MSDN说的,有记录时1 无记录时0,想获得记录数目重复MoveNext统计
可以执行SQL语句来获取记录条数
可以执行SQL语句来获取记录条数
LONG GetRecordeCount(CDatabase *m_pDatabase)
{
long nCount = 0;
try
{
if(m_pDatabase && m_pDatabase->IsOpen())
{
CString cmdSQL = _T("");
cmdSQL = _T("SELECT COUNT(*) FROM youTabName WHERE youCondition");
CRecordset rsCount(m_pDatabase);
if(rsCount.Open(CRecordset::forwardOnly, cmdSQL, CRecordset::executeDirect))
{
CString strValue = _T("0");
if (!rsCount.IsEOF())
rsCount.GetFieldValue((short)0, strValue);
nCount = _ttol(strValue);
rsCount.Close();
}
}
}
catch(CDBException * e)
{
e->ReportError();
e->Delete();
}
return nCount;
}
#8
哦,可能我理解MSDN的 GetRecordCount()函数时理解错了,我以为 有的时候则返回记录数,没有则返回0
哎,从头到尾遍历一下算了,
哎,从头到尾遍历一下算了,