我有一个ACCESS库Test.mdb,库内有一表:User,我想按表内的姓名及日期来进行查询,姓名字段为name,日期字段为date
_RecordSetPrt m_precordset;
...
m_precordset.Open("",.....)
我想问下那条SQL语句怎么写?
Select * from User where name=str_name and Date=dt_date --str_name及dt_date是变量
不知怎么样把这SQL语句放到VC里?谢谢
_RecordSetPrt m_precordset;
...
m_precordset.Open("",.....)
我想问下那条SQL语句怎么写?
Select * from User where name=str_name and Date=dt_date --str_name及dt_date是变量
不知怎么样把这SQL语句放到VC里?谢谢
即”2005-7-25“这样的格式,这样对于拼凑sql语句比较方便
呵呵,个人意见,仅供参考
#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
2。app文件的InitInstance中加入
if(S_OK!=OleInitialize(NULL)) //或者CoInitialize()
{
AfxMessageBox("初始化COM组件库错误");
}
下面就是数据库操作
_ConnectionPtr pConn;
_RecordsetPtr pRs;
CString strSQL;
pConn.CreateInstance(__uuidof(Connection));
pConn->CursorLocation=adUseClient;
strSQL="Provider=SQLOLEDB;Server=Gooyan;DataBase=SkillsBox;UID=sa;PWD=aaaaaaaa";
pConn->Open(_bstr_t(strSQL),"","",-1);pRs.CreateInstance(__uuidof(Recordset));
pRs->CursorLocation=adUseClient;
pRs->PutActiveConnection(pConn.GetInterfacePtr());pRs1.CreateInstance(__uuidof(Recordset));
pRs1->CursorLocation=adUseClient;
pRs1->PutActiveConnection(pConn.GetInterfacePtr());strSQL="select * from catalog order by cataid";
pRs->Open(_bstr_t(strSQL),vtMissing,adOpenDynamic,adLockBatchOptimistic,adCmdText);
try{
ss.format("Select * from User where name= '%s' and Date = #%s#", str_name ,strTime);
m_precordset.Open(_bstr_t(ss)....
}
catch(...)
{
AfxMessageBox("不能打开表"); //
}
但它总是出现AfxMessageBox对话框,数据库是能正确连了,但表为什么不能打开?还有,连数据库的时候很慢,大概要6秒钟,我认为不应该有这么慢的,也不知为什么?不关机子的事
跟踪一下,确实是符合标准的??没有语法错的
呵呵,给你一段偶的代码吧,但愿能有对你有帮助////////////////////////////////
_variant_t RecordsAffected;
_RecordsetPtr pRecordset;pRecordset.CreateInstance(_uuidof(Recordset));pRecordset = pCon->Execute (_bstr_t(strSql) , &RecordsAffected , adCmdUnknown);
if(pRecordset->State)
{
pRecordset->Close();
pRecordset = NULL;
}/////////////////////////////////////////
这里我用的pRecordset是个局部变量,所以要创建和结束的时候关闭pCon是你的_ConnectionPtr,我想你也要用到的吧
我喜欢用pCon->Execute 执行sql语句的当然,和你的open道理是一样的啦
如果不用局部的变量,像你那样用类成员的m_precordset也一样
m_precordset= pCon->Execute (_bstr_t(strSql) , &RecordsAffected , adCmdUnknown);
建议还是跟踪一下,看看sql语句是否正确,符合格式
如果你数据库在当前目录下
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=temp.mdb;
即使把sql语句写成Select * from User
看看能不能打开,呵呵