mfc odbc怎么输出数据库表内数据条目总数

mfc odbc怎么输出数据库表内数据条目总数,第1张

你首先要创建一个连接数据库对象,比如你用cdatabase连接数据库后,然后用crecordset对象去打开表,那你运行crecordset对象的open函数,其中select语句用下面的格式:

select count(sysobjects.name )from sysobjects.xtype ='U'

在数据库的sysobjects表里有这个数据库全部表的信息, xtype值为'U'的就是表名;

然后调用movefirst;

然后调用crecordset的getfieldvalue函数既可以获取值;

1.提取单条记录

/*

#import "c:\Program Files\Common Files\System\ADO\msado15.dll" \

no_namespace rename("EOF", "EndOfFile")

*/

CoInitialize(NULL)

_bstr_t varSource="Provider=Microsoft.Jet.OLEDB.4.0Data Source=*.mdb"

//_bstr_t varSource="Data Source=myServerAddressInitial Catalog=myDataBaseUser Id=myUsernamePassword=myPassword"

_ConnectionPtr m_pConnection(_uuidof(Connection))

m_pConnection->Open(varSource,"","",adModeUnknow)

_RecordsetPtr m_pSet(_uuid(Recordset))

try {

m_pSet->Open(%%1,m_pConnection.GetInterfacePtr()

adOpenDynamic,adLockPessimistic,adCmdText)

}

catch(_com_error *e){

{

AfxMessageBox(e->ErrorMessage())

return

}

_variant_t var

CString %%2=""

long fldc=m_pSet->GetFields()->GetCount()

long i=0

try {

m_pSet->MoveFirst()

if(!m_pSet->adoEOF)

{

for(i=0i<fldci++)

{

var=m_pSet->GetCollect((long)i)

var.ChangeType(VT_BSTR)

%%2+=var.bstrVal

%%2+=" "

}

//m_pSet->MoveNext()

}

}

catch(_com_error *e){

AfxMessageBox(e->ErrorMessage())

delete e

}

//m_pSet->MoveFirst()

CoUninitialize(NULL)

3.显示表格

/*

#import "c:\Program Files\Common Files\System\ADO\msado15.dll" \

no_namespace rename("EOF", "EndOfFile")

*/

CoInitialize(NULL)

_bstr_t varSource="Provider=Microsoft.Jet.OLEDB.4.0Data Source=*.mdb"

//_bstr_t varSource="Data Source=myServerAddressInitial Catalog=myDataBaseUser Id=myUsernamePassword=myPassword"

_ConnectionPtr m_pConnection(_uuidof(Connection))

m_pConnection->Open(varSource,"","",adModeUnknow)

//打开属性为默认(adModeRead(只读),adModeWrite(可写),adModeReadWrite(可读写)等)

_RecordsetPtr m_pSet(_uuid(Recordset))

try {

HRESULT hr=m_pSet->Open(%%1,m_pConnection.GetInterfacePtr(),

adOpenDynamic,adLockPessimistic,adCmdText)

}

catch(_com_error *e){

AfxMessageBox(e->ErrorMessage())

}

if(SUCCESSED(hr))

{

//表打开成功

}

FieldsPtr p_fields=m_pSet->Fields

FieldPtr p_field

_variant_t var_index

LPCSTR field_name

int index=0

_bstr_t bstr_field_name

int countfields=p_fields->GetCount()

CString *Column=new CString[countfields]

CListCtrl *pList=(CListCtrl*)GetDlgItem(%%1)//IDC_LIST_TABLEDATA

VERIFY(pList)

pList->DeleteAllItems()

for(index=0index<countfieldsindex++)

{

var_index.vt=VT_I4

var_index.IVal=index

p_field=p_fields->Item[var_index]

bstr_field_name=p_field->GetName()

field_name=(LPCSTR)bstr_field_name

Column[index]=field_name

int ColumnWidth=Column[index].GetLength()*15

pList->InsertColumn(index,field_name,LVCFMT_CENTER,ColumnWidth)

}

int i=0

_bstr_t vCol

//pList->SetTextBkColor(RGB(122,200,122))

//pList->SetTextColor(RGB(0,0,200))

while(!m_pSet->adoEOF)

{

pList->Insert(i,atoi(i))

for(int j=0j<countfieldsj++)

{

vCol=m_pSet->GetCollect((long)j)

pList->SetItemText(i,j,vCol)

}

m_pSet->MoveNext()

i++

}

CoUninitialize(NULL)

4. *** 作表格

/*

#import "c:\Program Files\Common Files\System\ADO\msado15.dll" \

no_namespace rename("EOF", "EndOfFile")

*/

CoInitialize(NULL)

_bstr_t varSource="Provider=Microsoft.Jet.OLEDB.4.0Data Source=*.mdb"

//_bstr_t varSource="Data Source=myServerAddressInitial Catalog=myDataBaseUser Id=myUsernamePassword=myPassword"

_ConnectionPtr m_pConnection(_uuidof(Connection))

m_pConnection->Open(varSource,"","",adModeUnknow)

//打开属性为默认(adModeRead(只读),adModeWrite(可写),adModeReadWrite(可读写)等)

_RecordsetPtr m_pSet(_uuid(Recordset))

try {

HRESULT hr=m_pSet->Open(%%1,m_pConnection.GetInterfacePtr(),

adOpenDynamic,adLockPessimistic,adCmdText)

}

catch(_com_error *e){

AfxMessageBox(e->ErrorMessage())

}

if(SUCCESSED(hr))

{

//表打开成功

}

FieldsPtr p_fields=m_pSet->Fields

FieldPtr p_field

_variant_t var_index

LPCSTR field_name

int index=0

_bstr_t bstr_field_name

int countfields=p_fields->GetCount()

CString *Column=new CString[countfields]

CListCtrl *pList=(CListCtrl*)GetDlgItem(%%1)//IDC_LIST_TABLEDATA

VERIFY(pList)

pList->DeleteAllItems()

for(index=0index<countfieldsindex++)

{

var_index.vt=VT_I4

var_index.IVal=index

p_field=p_fields->Item[var_index]

bstr_field_name=p_field->GetName()

field_name=(LPCSTR)bstr_field_name

Column[index]=field_name

int ColumnWidth=Column[index].GetLength()*15

pList->InsertColumn(index,field_name,LVCFMT_CENTER,ColumnWidth)

}

int i=0

_bstr_t vCol

//pList->SetTextBkColor(RGB(122,200,122))

//pList->SetTextColor(RGB(0,0,200))

while(!m_pSet->adoEOF)

{

pList->Insert(i,atoi(i))

for(int j=0j<countfieldsj++)

{

vCol=m_pSet->GetCollect((long)j)

pList->SetItemText(i,j,vCol)

}

m_pSet->MoveNext()

i++

}

CoUninitialize(NULL)

5.数值范围查询

/*

#import "c:\Program Files\Common Files\System\ADO\msado15.dll" \

no_namespace rename("EOF", "EndOfFile")

*/

try

{

//创建连接对象实例

m_pConnection.CreateInstance("ADODB.Connection")

//设置连接字符串

CString strConnect="DRIVER={Microsoft Access Driver (*.mdb)}\

uid=pwd=DBQ=shujuku.mdb"

//使用Open方法连接数据库

m_pConnection->Open((_bstr_t)strConnect,"","",adModeUnknown)

}

catch(_com_error e)

{

AfxMessageBox(e.Description())

}

}

try {

int min = %%1

int max = %%2

CString sql

sql.Format("select count(*) as pro_count from ProPrice where price between %d and %d",min,max)

HRESULT hr=m_pSet->Open(sql,m_pConnection.GetInterfacePtr(),

adOpenDynamic,adLockPessimistic,adCmdText)

}

catch(_com_error *e){

AfxMessageBox(e->ErrorMessage())

}

if(SUCCESSED(hr))

{

//表打开成功

}

FieldsPtr p_fields=m_pSet->Fields

FieldPtr p_field

_variant_t var_index

LPCSTR field_name

int index=0

_bstr_t bstr_field_name

int countfields=p_fields->GetCount()

CString *Column=new CString[countfields]

CListCtrl *pList=(CListCtrl*)GetDlgItem(%%1)//IDC_LIST_TABLEDATA

VERIFY(pList)

pList->DeleteAllItems()

for(index=0index<countfieldsindex++)

{

var_index.vt=VT_I4

var_index.IVal=index

p_field=p_fields->Item[var_index]

bstr_field_name=p_field->GetName()

field_name=(LPCSTR)bstr_field_name

Column[index]=field_name

int ColumnWidth=Column[index].GetLength()*15

pList->InsertColumn(index,field_name,LVCFMT_CENTER,ColumnWidth)

}

int CountLines(char *filename) { ifstream ReadFileint n=0char line[512]ReadFile.open(filename,ios::in)//ios::in 表示以只读的方式读取文件 if(ReadFile.fail())//文件打开失败:返回0 { return 0} else//文件存在 { while(!ReadFile.eof()) { ReadFile.getline(line,512,'\n')n++} return n}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9669667.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存