當前位置:首頁 » 數據倉庫 » vc操作access資料庫
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

vc操作access資料庫

發布時間: 2022-06-25 09:15:52

『壹』 怎麼用VC連接ACCESS資料庫

_variant_t var; CString strName,strAdd; m_pConnection.CreateInstance(__uuidof(Connection)); m_pRecordset.CreateInstance(__uuidof(Recordset)); try{m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\\My Documents\\sjk.mdb", "","",adModeUnknown);}catch(_com_error e){AfxMessageBox("資料庫連接失敗,確認資料庫sjk.mdb是否在當前路徑下!"); //return FALSE;} try{m_pRecordset->Open("SELECT * FROM biao", m_pConnection.GetInterfacePtr(), adOpenDynamic, adLockOptimistic, adCmdText);}catch(_com_error *e){AfxMessageBox(e->ErrorMessage());} try{if(!m_pRecordset->BOF) m_pRecordset->MoveFirst();else{MessageBox("表內數據為空"); } while(!m_pRecordset->adoEOF){var = m_pRecordset->GetCollect("name"); if(var.vt != VT_NULL) strName = (LPCSTR)_bstr_t(var); var = m_pRecordset->GetCollect("add"); if(var.vt != VT_NULL) strAdd = (LPCSTR)_bstr_t(var); m_AccessList.AddString( strName + " --> "+strAdd ); m_pRecordset->MoveNext(); } m_AccessList.SetCurSel(0);}catch(_com_error *e){MessageBox(e->ErrorMessage());}m_pRecordset->Close(); m_pConnection->Close();

『貳』 vc++連接access資料庫

不是有個ado庫專門連接資料庫的?下面是連接字元串
pConn->Open("Driver={Microsoft Access Driver (*.mdb)};Dbq=data.mdb;","admin","123",adModeUnknown);

『叄』 如何用VC實現ACCESS資料庫導入、導出EXCEL

兩種方式:一種是手動,一種是代碼或宏
一:手動導出時,右鍵單擊要導出的表\查詢\窗體等對象,選擇導出,然後選擇導出格式為EXCEL的某版本,再點"導出"按鈕即可.手動導入時,右鍵單擊空白處,選擇導入,在導入類型中選擇EXCEL,然後找到自己要導入的文件,按提示一步步做就行了
二:用宏導出,在宏窗口中,選擇新建,然後在操作中選擇或輸入outputto,再選擇對象類型\名稱,輸出地址等,保存宏,然後即可雙擊宏即可實現導出,導入則要在操作中選擇或輸入TransferDatabase,其它設置類同,多試幾次就知道了.至於代碼,將宏轉換成代碼就知道了

『肆』 VC遠程連接access資料庫

access本身是本地資料庫,原則上不能遠程訪問。可以用sql 2005,然後用c++中的AD0,具體用法網路搜索C++的ADO操作 很多例子,或者用java中jdbc訪問,自己看看書

『伍』 vc連接ACCESS資料庫

你自己得先設置一下資料庫才行...
在控制面板里選擇管理工具,打開數據源(ODBC),這時彈出ODBC數據源管理器對話框。
打開系統DNS選項卡,點擊添加,選擇Micorsoft Access Driver(*mdb),點擊完成後,再輸入數據源名和說明。(這里你下的是人家的代碼,他的數據源名稱可能是給定的,因此你得找到他使用的數據源名才行)。

然後在選擇資料庫(你下載的源碼中帶的資料庫的路徑)。

這樣才算設置好。。。

『陸』 在VC6.0中,如何操作Access資料庫」壓縮和修復資料庫「功能

cdatabase*
m_pdatabase;
crecordset*
m_precordset;
m_pdatabase=new
cdatabase;
try
{
m_pdatabase->open("dbstu.mdb");
m_precordset=new
crecordset(m_pdatabase);
}
以上是建立資料庫連接和數據集對象,有了m_precordset對象,就可以對資料庫進行查詢操作。
cstring
strselect(_t("select
*
from
["));
strselect
+=tbstu;
strselect
+=
_t("]");
m_precordset->open(dbopendynaset,strselect);
查詢stuid:
sql="select
*
from
tbstu
where
stuid="+id
如果stuid是字元串類型的:
sql="select
*
from
tbstu
where
stuid='"+id+"'"
你的資料庫是不是放在程序文件一個目錄?如果不是修改一下。m_pdatabase->open("dbstu.mdb");
還有在文件頭添加:#include

『柒』 VC怎麼查詢access資料庫查詢

一、使用ODBC介面,在這里我們使用MFC的CDatabase類,該類是對SQLConnect等ODBC的API的封裝。需要包含afxdb.h

BOOL ODBCConnect(CString strDBFile)
{
CString strConnect;
strConnect.Format(_T("ODBC;DRIVER={MICROSOFT ACCESS DRIVER (*.mdb)};UID=sa;PWD=;DBQ=%s"), strDBFile);

CDatabase db;
if(db.Open(NULL, FALSE, FALSE, strConnect))
{
//連接資料庫成功
CRecordset rs(&db);
CString strSql;
strSql = _T("select * from info"); //SQL語句
rs.Open(AFX_DB_USE_DEFAULT_TYPE, strSql); //執行Sql語句(可添加刪除查詢等)
if(rs.IsOpen())
{
CDBVariant variant;
rs.MoveFirst();
while(!rs.IsEOF())
{
//讀取記錄
rs.GetFieldValue(_T("姓名"), variant);

rs.MoveNext();
}
}

db.Close();
return TRUE;
}

return FALSE;
}

二、使用ADO連接資料庫,因為要使用COM,需要初始化(CoInitialize).然後就可以生成介面的對象操作,代碼如下:

#import "C:Program Files/Common Files/System/ado/msado15.dll" rename("EOF", "adoEOF") //生成C++類,改變EOF函數的名稱
using namespace ADODB;

BOOL ADOConnect(CString strDBFile)
{
_ConnectionPtr pConnection;
if(pConnection.CreateInstance(__uuidof(Connection)) != S_OK)
{
return FALSE;
}

CString strConnect;
strConnect.Format(_T("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s"), strDBFile);
if(pConnection->Open(_bstr_t(strConnect), "", "", adModeUnknown) == S_OK)
{
//連接資料庫成功
_RecordsetPtr pRecordset;
if(pRecordset.CreateInstance(__uuidof(Recordset)) != S_OK)
{
pConnection->Close();
return FALSE;
}

CString strSql;
strSql = _T("select * from info");
HRESULT hr = pRecordset->Open(_bstr_t(strSql), _variant_t((IDispatch*)pConnection, TRUE), adOpenUnspecified, adLockUnspecified, adCmdUnknown);
if(hr != S_OK)
{
pConnection->Close();
return FALSE;
}
_variant_t vt;

pRecordset->MoveFirst();
while(!pRecordset->adoEOF)
{
vt = pRecordset->Fields->GetItem("姓名")->Value;

pRecordset->MoveNext();
}

pConnection->Close();
return TRUE;
}

return FALSE;
}

『捌』 vc++中 怎樣讀取Access資料庫

VC下利用ADO連接Access資料庫

#include <iostream.h>
#import "c:\\program files\\common files\\system\\ado\\msado15.dll" no_namespace rename ("EOF", "adoEOF")

int main(){

//使用ADO連接資料庫...
//---------------------------------------------------------------------------------
_ConnectionPtr m_pConnection;

CoInitialize(NULL);
m_pConnection.CreateInstance(__uuidof(Connection));

// 在ADO操作中建議語句中要常用try...catch()來捕獲錯誤信息,
// 因為它有時會經常出現一些想不到的錯誤。
try
{
// 打開本地Access庫db1.mdb
m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db1.mdb","","",adModeUnknown);

}
catch(_com_error e)
{
cout<<"資料庫連接失敗,確認資料庫db1.mdb是否在當前路徑下!"<<endl;
return FALSE;
}
//-------------------------------------------------------------------------------------
//建立數據集
//-------------------------------------------------------------------------------------
_RecordsetPtr m_pRecordset;
m_pRecordset.CreateInstance(__uuidof(Recordset));

// 在ADO操作中建議語句中要常用try...catch()來捕獲錯誤信息,
// 因為它有時會經常出現一些意想不到的錯誤。
try
{
m_pRecordset->Open("SELECT * FROM Home2",
m_pConnection.GetInterfacePtr(), // 獲取庫接庫的IDispatch指針
adOpenDynamic,
adLockOptimistic,
adCmdText);
}
catch(_com_error *e)
{
//AfxMessageBox(e->ErrorMessage());
cout<<e->ErrorMessage()<<endl;
}

//--------------------------------------------------------------------------------------
//讀取數據
//--------------------------------------------------------------------------------------
_variant_t var;
char *strID,*strX,*strY;
float X,Y;
try
{
if(!m_pRecordset->BOF)
m_pRecordset->MoveFirst();
else
{
cout<<"表內數據為空"<<endl;
return 1;
}

// 讀入庫中各欄位並加入列表框中
while(!m_pRecordset->adoEOF)
{
var = m_pRecordset->GetCollect("ID");
if(var.vt != VT_NULL)
strID= _com_util::ConvertBSTRToString((_bstr_t)var); //_variant_t轉字元串
var = m_pRecordset->GetCollect("X");
if(var.vt != VT_NULL)
strX=_com_util::ConvertBSTRToString((_bstr_t)var);
var = m_pRecordset->GetCollect("Y");
if(var.vt != VT_NULL)
strY=_com_util::ConvertBSTRToString((_bstr_t)var);
cout<<strID<<"is"<<strX<<" "<<strY<<endl;

m_pRecordset->MoveNext();
}
}
catch(_com_error *e)
{
cout<<e->ErrorMessage()<<endl;
}

//--------------------------------------------------------------------------------------
//關閉數據集
m_pRecordset->Close();
m_pRecordset = NULL;
//--------------------------------------------------------------------------------------
//關閉資料庫連接
//--------------------------------------------------------------------------------------
if(m_pConnection->State)
m_pConnection->Close();
m_pConnection= NULL;
return 0;
}

『玖』 怎樣用C++連接並使用access資料庫

使用C++編程語言,連接對Access資料庫進行操作,常用的方法有DAO和ADO兩種方式,本文將介紹採用ADO的方式方位Access資料庫。
先介紹一下ADO,ADO (ActiveX Data Objects) 是一個用於存取數據源的COM組建。它提供了編程語言和統一數據訪問方式OLE DB的一個中間層。允許開發人員編寫訪問數據的代碼而不用關心資料庫是如何實現的,而只用關心到資料庫的連接。
在程序的開始,首先導入所需要的庫:#import "c:\program files\common files\system\ado\msado15.dll" no_namespace rename("EOF", "adoEOF") ,這里重命名EOF是必要的,因為典型的VC應用都已經定義了EOF作為常數-1。
完整的程序如下,以注釋的形式來對程序進行解釋:
_ConnectionPtr m_pConnection; //連接access資料庫的鏈接對象
_RecordsetPtr m_pRecordset; //結果集對象
CoInitialize(NULL); //初始化
m_pConnection.CreateInstance(__uuidof(Connection)); //實例化對象

//連到具體某個mdb ,此處的的Provider語句因Access版本的不同而有所不同。
try
{
m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=MyAccess.mdb","","", adModeUnknown);
}
catch(_com_error e)
{
AfxMessagebox(_T("資料庫連接失敗!"));
return;
}

m_pRecordset.CreateInstance(__uuidof(Recordset)); //實例化結果集對象
//執行sql語句
try
{
CString sql= _T("select * from Patient");
m_pRecordset->Open(sql, m_pConnection.GetInterfacePtr(), adOpenDynamic, adLockOptimistic, adCmdText);
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
if(m_pConnection->State)
{
m_pConnection->Close();
m_pConnection= NULL;
}
return ;
}
//處理結果集
try
{
//若結果為空,結束
if(m_pRecordset->BOF)
{
AfxMessageBox_T(("表內數據為空!"));
if(m_pConnection->State)
{
m_pRecordset->Close();
m_pRecordset = NULL;
m_pConnection->Close();
m_pConnection= NULL;
}
return ;
}
//游標定位到第一條記錄
m_pRecordset->MoveFirst();
_variant_t var; //從結果集中取出的數據放到var中
char *name;
while(!m_pRecordset->adoEOF)
{
var= m_pRecordset->GetCollect("Name"); //要取欄位的名稱。
if(var.vt != VT_NULL)
{
name= _com_util::ConvertBSTRToString((_bstr_t)var); //轉換成char*類型
}
string MyName = name;
m_pRecordset->MoveNext();
}
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMssage());
}
//退出程序時的處理 ,關閉資料庫的相關操作
if(m_pConnection->State)
{
m_pRecordset->Close();
m_pRecordset = NULL;
m_pConnection->Close();
m_pConnection= NULL;
}