導航:首頁 > 編程大全 > vc連接access資料庫失敗

vc連接access資料庫失敗

發布時間:2023-02-23 13:24:38

『壹』 vc連接access2003出錯,頭都大了runtime錯誤。。。跪求!!在線等

資料庫編程的思路都是一致的:打開資料庫連接-》執行SQL語句-》獲得查詢結果-》關閉資料庫連接,不同的資料庫訪問技術有不同的要求,比如用C API詰問MySql資料庫的時候還得釋放查詢結果集。
ODBC訪問資料庫得配置數據源

現在用VC、MFC訪問資料庫常用的技術是ADO,很實用!

導入ADO庫
#import "c:\Program Files\Common Files\System\ADO\msado15.dll" no_namespace rename("EOF", "adoEOF")
2、用導入的動態庫的指針操作資料庫.
打開資料庫連接
_ConnectionPtr m_pConn; // 資料庫連接指針
// 創建Conneciton對象
m_pConn.CreateInstance(_T("ADODB.Connection"));
用ConnectionPtr 的open方法m_pConn->Open(_bstr_t(m_sConn),
_T(""), _T(""), lOptions));
m_sConn為你連接資料庫的信息,你應該按照你的要求打開資料庫

然後你用打開的那個連接進行操作資料庫。比如
_RecordsetPtr pRec = m_pConn->Execute(_bstr_t(pszSql), NULL, CmdText);
pszSql 就你要操作資料庫的SQL語句。在這個SQL語句里你可以創建表、更新表等。

用ADO訪問的時候要求初始他COM庫和釋放COM對象
// 初始化COM環境(庫)
::CoInitialize(NULL);
//釋放COM對象
::CoUninitialize();

ODBC訪問資料庫
配置ODBC數據源:打開控制面板下的「數據源」,彈出「ODBC數據源管理器」,選擇DSN選項卡-》添加->你選擇你的SQL Server選項,單擊完成。如圖然後你再按照向導提示添加。

代碼中用ODBC訪問資料庫你得加上afxdb.h頭文件
用CDataBase 類連接資料庫、CRecordSet類查詢記錄。
現在在VC訪問資料庫常用的是ADO訪問,你可以找一下我前面的回答有ADO訪問資料庫的步驟。

CDataBase m_cODBCDb;
用CDataBase類的OpenEx()函數打開資料庫連接。連接字元串你自己構造一下。
定義一個與上面資料庫相關的查詢對象
CRecordSet m_cODBCRec(&m_cODBCDb);
用這個查詢對象的open方法就可以執行SQL語句與資料庫交互了;

『貳』 VC6.0連接ACCESS資料庫

連接前再加上這句
::CoInitialize(NULL);
另外m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;\Data Source=zhu.mdb", "","",adModeUnknown中的那個\D是手誤還是?
程序結束的時候再調用
::CoUninitialize();

『叄』 vc連接ACCESS資料庫

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

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

這樣才算設置好。。。

『肆』 VC 無法連接資料庫,求大神指點。

看看連接字元串

『伍』 VC++6.0如何連接ACCESS2007

用ADO的方式連接資料庫:具體做法如下
1、在工程中導入下面兩個文件ADOConn.h和ADOConn.cpp(見後面)
2、在需要調用資料庫的CPP文件開始包含頭文件 #include "ADOConn.h"(資料庫連接的代碼已封裝到ADOConn.cpp中的OnInitADOConn方法)
3、按照資料庫連接-》資料庫操作-》斷開連接的步驟調用(以從資料庫中獲取數據為例)
ADOConn m_ADOConn1; // 定義ADOConn類對象
m_ADOConn1.OnInitADOConn(); //連接資料庫
CString sql1;
sql1.Format("select top 20 職務,count(職務) as NameCount from tb_holidays group by 職務 order by 'NameCount' desc");
//設置查詢語句
m_ADOConn1.m_pRecordset = m_ADOConn1.GetRecordSet((_bstr_t)sql1); //查詢
while(!m_ADOConn1.m_pRecordset->adoEOF)
{
CString temp;
//從資料庫中取得數據
temp=(char*)(_bstr_t)m_ADOConn1.m_pRecordset->GetCollect("職務");

m_ADOConn1.m_pRecordset->MoveNext(); //將記錄集指針移動到下一條記錄
}
m_ADOConn1.ExitConnect(); //斷開資料庫連接

////////////////////////ADOConn.cpp//////////////////////////////////////////////
#include "stdafx.h"
#include "ADOConn.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

ADOConn::ADOConn()
{

}

ADOConn::~ADOConn()
{

}

BOOL ADOConn::OnInitADOConn()
{
//初始化OLE/COM庫環境
::CoInitialize(NULL);
try
{
//創建connection對象
//下面語句等效於:m_pConnection.CreateInstance("ADODB.Connection");
char path[MAX_PATH];
CString strPath;
::GetMoleFileName(NULL,path,MAX_PATH);
strPath=path;
strPath=strPath.Left( strPath.ReverseFind(_T('\\'))+1 );//去掉絕對路徑後的PersonManage.exe
strPath = strPath + "PersonManage.mdb";
m_pConnection.CreateInstance(__uuidof(Connection));
// 打開本地Access庫student.mdb
CString strname;
//此處為連接Access的連接字元串,用ADO連接SQL也是此模式,不同的就是變化此處的連接字元串
strname.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;Persist Security Info=False;Jet OLEDB:Database Password=123",strPath);
_bstr_t strConnect=strname;
m_pConnection->Open(strConnect,"","",adModeUnknown);
}
catch(_com_error e)
{
CString str =(char*)e.Description();
AfxMessageBox(str);
AfxMessageBox("資料庫連接失敗,確認資料庫PersonManage.mdb是否在當前路徑下且密碼正確!");
ExitConnect();
return FALSE;
}
return TRUE;
}

void ADOConn::OnInitADOConnSrv(CString server)//初始化遠程伺服器的資料庫訪問連接
{
}

_RecordsetPtr& ADOConn::GetRecordSet(_bstr_t bstrSQL)
{
try
{
//連接資料庫,如果connection對象為空,則重新連接資料庫
if(m_pConnection==NULL)
OnInitADOConn();
//創建記錄集對象
//m_pRecordset.CreateInstance(__uuidof(Recordset));
m_pRecordset.CreateInstance("ADODB.Recordset");
//取得表中的記錄
m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
}
catch(_com_error e)
{
e.Description();
}
//返回記錄集
return m_pRecordset;
}

BOOL ADOConn::ExecuteSQL(_bstr_t bstrSQL)
{
_variant_t RecordsAffected;
try
{
//是否已連接資料庫
if(m_pConnection==NULL)
OnInitADOConn();
/***********************************************************************
* connection對象的Execute方法說明如下: *
* Execute(_bstr_t CommandText,VARIANT * RecordsAffected,long Options) *
* 其中CommandText是命令字元串,通常是SQL命令 *
* 參數RecordsAffected是操作完成後所影響的行數 *
* 參數Options表示CommandText的類型。 *
* adCmdText-文本命令 *
* adCmdTable-表名 *
* adCmdProc-存儲過程 *
* adCmdUnknown-未知 *
***********************************************************************/
m_pConnection->Execute(bstrSQL,NULL,adCmdText); //執行SQL語句
return true;
}
catch(_com_error e)
{
e.Description();
return false;
}
}

void ADOConn::ExitConnect()
{
//關閉記錄集和連接
if(m_pRecordset!=NULL)
m_pRecordset->Close();
m_pConnection->Close();
//釋放環境
::CoUninitialize();
}

int ADOConn::GetRecordCount()
{
int nCount=0;
try{

m_pRecordset->MoveFirst();
}
catch(...)
{
return 0;
}
if(m_pRecordset->adoEOF)
return 0;
while (!m_pRecordset->adoEOF)
{
m_pRecordset->MoveNext();
nCount=nCount+1;
}
m_pRecordset->MoveFirst();
return nCount;
}

///////////////////////////////ADOConn.h///////////////////////////////////////
// ADOConn.h: interface for the ADOConn class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_ADOCONN_H__B8D01B34_20DA_49AE_9FA1_664D67A28ABD__INCLUDED_)
#define AFX_ADOCONN_H__B8D01B34_20DA_49AE_9FA1_664D67A28ABD__INCLUDED_
#import "c:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF")rename("BOF","adoBOF")

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

class ADOConn
{
public:
//添加一個指向Connection對象的指針
_ConnectionPtr m_pConnection;
//添加一個指向Recordset對象的指針
_RecordsetPtr m_pRecordset;

public:
int GetRecordCount();
ADOConn();
virtual ~ADOConn();

//初始化--連接資料庫(本地)
BOOL OnInitADOConn();
//初始化--連接資料庫(遠程伺服器)
void OnInitADOConnSrv(CString server);
//執行查詢
_RecordsetPtr& GetRecordSet(_bstr_t bstrSQL);
//執行SQL語句
BOOL ExecuteSQL(_bstr_t bstrSQL);
//斷開資料庫連接
void ExitConnect();
};

#endif // !defined(AFX_ADOCONN_H__B8D01B34_20DA_49AE_9FA1_664D67A28ABD__INCLUDED_)

我可是花了很長時間回答你這個問題哦,記得給分哦 謝謝

『陸』 vc l連接 access2007 為什麼打不開資料庫 代碼如下

第一你必須確保連接成功 第二 你必須顯示數據 如果 連第一步連接都沒成功

說明有倆點做錯 1 連接語句錯誤 第二文件路徑不對 3 沒有許可權

閱讀全文

與vc連接access資料庫失敗相關的資料

熱點內容
4kb的txt文件差不多多少字 瀏覽:984
u盤文件突然變成exe 瀏覽:164
現在哪些學校初中有學編程的 瀏覽:402
word查找全選 瀏覽:599
開工報告附什麼文件資料 瀏覽:150
分區工具app怎麼用 瀏覽:212
安卓堅果雲文件路徑 瀏覽:591
sqllog文件 瀏覽:236
如何在電腦中找到文件路徑 瀏覽:830
數據結構訪問和查找有什麼區別 瀏覽:401
怎麼清空icloud內的數據 瀏覽:338
微信鎖屏後音樂停止 瀏覽:668
applepay蘋果手機卡 瀏覽:835
一個14mb的文件能儲存多少萬漢字 瀏覽:478
騰訊文檔里如何導出數據 瀏覽:979
java面試題csdn 瀏覽:410
rpgnvp是什麼文件 瀏覽:594
如何將一列數據復制到excel 瀏覽:488
sd卡怎麼恢復excel文件 瀏覽:282
gdblinux內核多核調試 瀏覽:24

友情鏈接