主题:请教一个VC查询数据库的问题
chenchen900
[专家分:10] 发布于 2006-06-18 16:03:00
我要用VC查询ACCESS数据库中的3个字段:数据表名,字段名,内部代码;
该怎么写这个程序呢,包括查询之后的显示工作.
谢谢!!!
[em1]
回复列表 (共5个回复)
沙发
wangsdong [专家分:21390] 发布于 2006-06-18 16:08:00
http://www.programfan.com/blog/article.asp?id=15520
先看看这个
板凳
chenchen900 [专家分:10] 发布于 2006-06-18 16:11:00
谢谢,看过了,不是太实用...
关键是我写的查询语句不能用..
3 楼
wangsdong [专家分:21390] 发布于 2006-06-18 16:23:00
你用的是什么连接方法,odbc,ado,ole,dao……
把代码贴出来看看?
4 楼
chenchen900 [专家分:10] 发布于 2006-06-18 16:45:00
ODBC连接,代码如下:
CString strSql;
if(m_dbname != "" )
strSql.Format("SELECT * FROM 数据词典表 WHERE 数据表名 = '%s'",
m_dbname);
else if(m_field != "" )
strSql.Format("SELECT * FROM 数据词典表 WHERE 字段名 = '%s'",m_field);
else if(m_code != "" )
strSql.Format("SELECT * FROM 数据词典表 WHERE 内部代码 = '%s'",m_code);
else
strSql = "SELECT * FROM 数据词典表";
try
{
//先关闭已经打开的记录集对象
m_pRecordset->Close();
//根据新的Sql查询语句,重新打开记录集对象
m_pRecordset->Open(strSql.AllocSysString(),
(IDispatch*)m_pConnection,
adOpenDynamic,
adLockOptimistic,
adCmdText);
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
//将查询后得到的新记录集显示出来
_variant_t var;
CString strDbname,strField,strCode;
strDbname=strField=strCode="";
while(!m_pRecordset->adoEOF)
{
var = m_pRecordset->GetCollect("数据表名");
if(var.vt != VT_NULL)
strDbname = (LPCSTR)_bstr_t(var);
var = m_pRecordset->GetCollect("字段名");
if(var.vt != VT_NULL)
strField = (LPCSTR)_bstr_t(var);
var = m_pRecordset->GetCollect("内部代码");
if(var.vt != VT_NULL)
strCode = (LPCSTR)_bstr_t(var);
m_sjcdlist.AddString(strDbname+strField+strCode);
m_pRecordset->MoveNext();
}
写的很没有条理,麻烦大家多提意见.
谢谢!!!
5 楼
truement [专家分:270] 发布于 2006-06-20 21:58:00
it's easier to use dao.
我来回复