[百分求教]使用VC连接操作数据库,最好用什么方法?
我想用VC写一个程序来连接操作access数据库,需要得到数据库中的各个表及其中字段的相关信息
比方:表名,表注释,表创建时间,修改时间
字段名,字段类型,注释,是否为主键,可否为空,有没有默认值等等
请问大家这些应该怎么做?在C+++上我是新手,请大家帮帮我
谢谢大家啦
问题点数:100、回复次数:15Top
1 楼billy145533($_$)回复于 2006-03-01 22:02:57 得分 20
ado
网上有n多例子Top
2 楼xuzheng318(忧郁王子)回复于 2006-03-01 22:09:45 得分 20
http://www.code365.com/programe/vc/sl/200512152324007357.htm
http://www.code365.com/programe/vc/sl/200512152324007892.htmTop
3 楼cime63(流浪的孩子)回复于 2006-03-01 22:26:59 得分 0
谢过楼上两位先
做惯了.NET(C#),做VC时头晕得很Top
4 楼joinclear()回复于 2006-03-01 23:00:56 得分 10
做惯了.NET(C#),做VC时头晕得很
那为什么 要用VC做呢 用.net做吧Top
5 楼cime63(流浪的孩子)回复于 2006-03-01 23:09:07 得分 0
joinclear() ( ) 信誉:100 2006-03-01 23:00:00 得分: 0
做惯了.NET(C#),做VC时头晕得很
那为什么 要用VC做呢 用.net做吧
=============================================
这个程序的使用者都没有装.net framework啊Top
6 楼syy64(太平洋)回复于 2006-03-02 08:00:05 得分 10
ADOTop
7 楼cime63(流浪的孩子)回复于 2006-03-02 08:06:39 得分 0
顶上去Top
8 楼cime63(流浪的孩子)回复于 2006-03-02 08:22:16 得分 0
使用ADO,怎么才能取得数据库中表名,表注释,字段名,字段类型,是否主键,可否为空等等信息呀?Top
9 楼cime63(流浪的孩子)回复于 2006-03-02 09:15:23 得分 0
再顶一次
请帮新手一次呀Top
10 楼alen_ghl(东方求*)回复于 2006-03-02 10:57:40 得分 0
用别的人写好的ado类,特别是已经有n年使用经验的类, 绝对好用!Top
11 楼syy64(太平洋)回复于 2006-03-02 11:09:25 得分 30
BOOL CDlgRecordset::GetMicTable()
{
try
{
m_pRecordset=theApp.m_pConnection->OpenSchema(adSchemaTables);
while(!(m_pRecordset->adoEOF))
{
//»ñÈ¡±í¸ñ
_bstr_t table_name = m_pRecordset->Fields->GetItem("TABLE_NAME")->Value;
//»ñÈ¡±í¸ñÀàÐÍ
_bstr_t table_type = m_pRecordset->Fields->GetItem("TABLE_TYPE")->Value;
//¹ýÂËһϣ¬Ö»Êä³ö±í¸ñÃû³Æ£¬ÆäËûµÄÊ¡ÂÔ
if ( strcmp(((LPCSTR)table_type),"TABLE")==0)
{
m_cmbTable.AddString((LPCSTR)table_name);
}
m_pRecordset->MoveNext();
}
m_pRecordset->Close();
}
catch(_com_error e)///²¶×½Òì³£
{
::MessageBox(NULL,e.Description(),"Ìáʾ",MB_OK);
return FALSE;
}
return true;
}Top
12 楼syy64(太平洋)回复于 2006-03-02 11:10:04 得分 0
BOOL CDlgRecordset::GetMicCol()
{
//OnSelchangeComTable();
/*try
{
m_pRecordset=theApp.m_pConnection->OpenSchema(adSchemaColumns);
while(!(m_pRecordset->adoEOF))
{
//»ñÈ¡±í¸ñ
_bstr_t col_name = m_pRecordset->Fields->GetItem("TABLE_NAME")->Value;
//_bstr_t col_name = m_pRecordset->Fields->GetItem(str)->Value;
//»ñÈ¡±í¸ñÀàÐÍ
_bstr_t col_type = m_pRecordset->Fields->GetItem("COLUMN_TYPE")->Value;
//¹ýÂËһϣ¬Ö»Êä³ö±í¸ñÃû³Æ£¬ÆäËûµÄÊ¡ÂÔ
if ( strcmp(((LPCSTR)col_type),"COLUMN")==0)
{
m_cmbCol.AddString((LPCSTR)col_name);
}
m_pRecordset->MoveNext();
}
m_pRecordset->Close();
}*/
_bstr_t mStrSQL;
CString strSQL;
CString strColName;
BSTR bstrColName;
long ColCount,i;
Field * field = NULL;
HRESULT hr;
Fields * fields = NULL;
LPCTSTR nameField;
CString str;
int nTable=m_cmbTable.GetCurSel();
m_cmbTable.GetLBText(nTable,str);
// strSQL.Format("SELECT * FROM %s",str);
strSQL="select * from " + str;
mStrSQL=strSQL;
/* if(m_pRecordset->State==1)
{
m_pRecordset->Close();
}
m_pRecordset->Open(mStrSQL,
theApp.m_pConnection.GetInterfacePtr(),
adOpenKeyset,
adLockOptimistic,
adCmdText);*/
hr=m_pRecordset->get_Fields(&fields);//µÃµ½¼Ç¼¼¯µÄ×ֶμ¯ºÏ
if(SUCCEEDED(hr))
fields->get_Count(&ColCount);//µÃµ½¼Ç¼¼¯µÄ×ֶμ¯ºÏÖеÄ×ֶεÄ×ܸöÊý
for(i=0;i<ColCount;i++)
{
fields->Item[i]->get_Name(&bstrColName);//µÃµ½¼Ç¼¼¯ÖеÄ×Ö¶ÎÃû
// UINT uType=fields->Item[i]->Type;
strColName=bstrColName;
nameField=strColName;
m_cmbCol.AddString(nameField);
}
// OnSelchangeComTable();
if(SUCCEEDED(hr))
fields->Release();//ÊÍ·ÅÖ¸Õë
// ¹Ø±Õ¼Ç¼¼¯
/// m_pRecordset->Close();
/*catch(_com_error e)///²¶×½Òì³£
{
::MessageBox(NULL,e.Description(),"Ìáʾ",MB_OK);
return FALSE;
}*/
return true;
}Top
13 楼cime63(流浪的孩子)回复于 2006-03-02 23:02:52 得分 0
先谢过楼上的了
最近两天有点忙,周末抽点时间做一下那个程序
嘿嘿,偶是全才,现在在搞PHP呢
其实.NET才是偶的主修Top
14 楼cime63(流浪的孩子)回复于 2006-03-03 08:08:33 得分 0
UPTop
15 楼junliu_0(驴子)回复于 2006-03-03 09:25:05 得分 10
楼主原来是高手啊,向楼主学习!Top




