當前位置:首頁 » 操作系統 » c中access資料庫

c中access資料庫

發布時間: 2025-06-29 14:49:49

㈠ MFC中如何連接access資料庫

比如在你的工程目錄中建一個 dbfvir.mdb //Access資料庫,然後你需要做以下操作:

1.在StadAfx.h裡面添加#include <afxdb.h> //新加入頭文件,用於CDatabase類。

2.在StadAfx.h最後的#endif上添加#import "msado15.dll" no_namespace rename("EOF","rsEOF")

這時,你要把msado15.dll拷到與dbf同級的目錄,也就是工程目錄里,當然你可以該路徑

3.在你自己的工程里,比如MyProc是你建的工程,添加代碼

CMyPorcApp::CMyProcApp(){

CoInitialize(NULL);

SQLConfigDataSource(NULL,ODBC_ADD_DSN, "Microsoft Access Driver (*.mdb)",

"DSN=MyImage;DBQ=dbf\vir.mdb;DEFAULTDIR=dbf"); //注冊本地資料庫數據源

m_db.OpenEx("DSN=MyImage;;",CDatabase::noOdbcDialog);//MyImage是數據源名稱

}

4.在前面的函數體之前創建全局變數CDatabase m_db; CRecordset m_rec(&m_db);

5.使用資料庫{

CString strSQL="select * from virdb";

BSTR bstrSQL=strSQL.AllocSysString();

m_rec.Open(CRecordset::dynaset,strSQL);

while(!m_rec.IsEOF())

{

// 使用資料庫的代碼,讀出來的數據都是字元串型的

CString MyVirable;

m_rec.GetFieldValue("欄位名",MyVirable); //將某個欄位的當前行的值讀到MyVirabl中

// ......

m_rec.MoveNext(); //將記錄移到下一行

}

}

本程序是自動注冊數據源的,當然可以手動注冊數據源,關於如何注冊數據源並不麻煩,敘述起來不太方面,你就參考其他的吧。不過建議不用手動注冊數據源,這樣你地程序移植性不好.

㈡ 如何使用c#操作ACCESS資料庫

1.C#連接連接Access

using System.Data;
1.C#連接連接Access

using System.Data; using System.Data.OleDb; string strConnection="Provider=Microsoft.Jet.OleDb.4.0;"; strConnection +=@"Data Source=C:\BegASPNET\Northwind.mdb"; OleDbConnection objConnection=new OleDbConnection(strConnection); objConnection.Open(); objConnection.Close();
解釋:
連接Access資料庫需要導入額外的命名空間,所以有了最前面的兩條using命令,這是必不可少的!

strConnection這個變數里存放的是連接資料庫所需要的連接字元串,他指定了要使用的數據提供者和要使用的數據源.

"Provider=Microsoft.Jet.OleDb.4.0;"是指數據提供者,這里使用的是Microsoft Jet引擎,也就是Access中的數據引擎,asp.net就是靠這個和Access的資料庫連接的.

"Data Source=C:\BegASPNET\Northwind.mdb"是指明數據源的位置,
他的標准形式是"Data Source=MyDrive:MyPath\MyFile.MDB".

PS:
1." ="後面的"@"符號是防止將後面字元串中的"\"解析為轉義字元.
2.如果要連接的資料庫文件和當前文件在同一個目錄下,還可以使用如下的方法連接:
strConnection ="Data Source=";
strConnection +=MapPath("Northwind.mdb");

㈢ Access資料庫的類型是

Access資料庫類型是關系型資料庫。

資料庫的類型:

1、資料庫按照數據的存儲位置可分為:集中式和分布式;

2、按照所採用的數據模型分為:層次型、網狀和關系型。

(3)c中access資料庫擴展閱讀:

access函數程序範例(c語言中)

/*intaccess(constchar*pathname,intmode);

此函數用於檢測某個指定路徑的文件(第一個參數pathname),是否符合第二個參數選項(F_OK(是否是存在的文件),R_OK(是否可讀),W_OK(是否可以寫入),X_OK(是否可以運行);當參數1滿足參數2條件時候返回0,不滿足返回-1;(此處剛剛好和字元串比對返回值類似)*/

//參考代碼如下:

#include<stdio.h>

#include<unistd.h>

#include<stdlib.h>

char*myboolean(intp);

intmain(intargc,char**argv)

{

inta,b,c,d;

a=access(argv[1],F_OK);

b=access(argv[1],R_OK);

c=access(argv[1],W_OK);

d=access(argv[1],X_OK);

printf("存在?%s,可讀?%s,可寫?%s,可運行?%s ",myboolean(a),myboolean(b),myboolean(c),myboolean(d));

exit(0);

}

char*myboolean(intp)/*此函數為了方便結果而定義的布爾運算*/

{

char*f=NULL;

if(p<0)

returnf="否";

if(p==0)

returnf="是";

}

/***********************************************************************************************/

網路-access函數

㈣ c語言可以連接access資料庫

#import "C:\program files\common files\system\ado\msado15.dll " no_namespace rename( "EOF ", "adoEOF ")
//#import "c:\program files\common files\system\ado\msado15.dll " rename ( "EOF ", "adoEOF ") no_namespace
#define CREATEiNSTANCE(sp,riid) { HRESULT _hr =sp .CreateInstance( __uuidof( riid ) ); \
if (FAILED(_hr)) _com_issue_error(_hr); }

#define RsITEM(rs,x) ((rs-> Fields-> Item[_variant_t(x)]-> Value))

class CHmbAdoDB
{
public:
BOOL m_bOpen;
_ConnectionPtr m_DbConn;
CString m_ErrMsg;
CString m_SQLState;
long mSqlCode;
public:
void Cancel();
BOOL IsOpen();
void RollbackTrans();
void CommitTrans();
long BeginTrans();
void Close();
BOOL Open(LPCSTR lpszConnect);
BOOL Execute(LPCTSTR lpSQL);
void ProviderError();

CHmbAdoDB()
{
}
virtual ~CHmbAdoDB()
{
}

};

class CHmbAdoDBRs : public CObject
{
public:
_RecordsetPtr m_Rs;
public:
CHmbAdoDBRs();
virtual ~CHmbAdoDBRs();
BOOL Open( CHmbAdoDB *pDB, LPCSTR szSource,long option=-1);
void Close();
void GetRs(_variant_t x,_bstr_t &ret);
void GetRs(_variant_t x,CString &ret);
BOOL IsEOF();
BOOL IsOpen();
BOOL MoveNext();
BOOL MovePrev();
BOOL MoveFirst();
BOOL MoveLast();
};

#endif // !defined(AFX_RfidAdoDB_H__7C539954_1C62_47B6_AB6E_1A5BB73A67E5__INCLUDED_) truct InitOle
{
InitOle() { ::CoInitialize(NULL); }
~InitOle() { ::CoUninitialize(); }
} _init_InitOle_;

long mSqlCode;
BOOL CHmbAdoDB::Open(LPCSTR lpszConnect)
{
try
{
CREATEiNSTANCE(m_DbConn,Connection);
m_DbConn-> Open(lpszConnect, " ", " ", adModeUnknown );
}
catch( _com_error &e)
{
return FALSE;
}
catch(...)
{
return FALSE;
}
return TRUE;
}

void CHmbAdoDB::Close()
{
if( IsOpen() )
{
m_DbConn-> Close();
}
}

long CHmbAdoDB::BeginTrans()
{
return m_DbConn-> BeginTrans();
}

void CHmbAdoDB::CommitTrans()
{
m_DbConn-> CommitTrans();
}

void CHmbAdoDB::RollbackTrans()
{
m_DbConn-> RollbackTrans();
}

void CHmbAdoDB::Cancel()
{
m_DbConn-> Cancel();
}

BOOL CHmbAdoDB::IsOpen()
{
return ( (m_DbConn-> GetState() != 0) ? TRUE : FALSE );
}

BOOL CHmbAdoDB::Execute(LPCTSTR lpSQL)
{
if (!IsOpen())
{
AfxMessageBox( "Network error, Database do not open. ");
return FALSE;
}

CString strSQL(lpSQL);
strSQL.TrimLeft();
strSQL.TrimRight();

try
{
m_DbConn-> Execute(_bstr_t(strSQL), NULL, adExecuteNoRecords);
}
catch( _com_error &e)
{
return FALSE;
}
catch(...)
{
return FALSE;
}

return TRUE;
}

void CHmbAdoDB::ProviderError()
{
// Print Provider Errors from Connection object.
// pErr is a record object in the Connection 's Error collection.
ErrorPtr pErr = NULL;

if( (m_DbConn-> Errors-> Count) > 0)
{
long nCount = m_DbConn-> Errors-> Count;

// Collection ranges from 0 to nCount -1.
for(long i = 0; i < nCount; i++)
{
pErr = m_DbConn-> Errors-> GetItem(i);
mSqlCode = pErr-> NativeError;
m_ErrMsg.Format( "SQLCODE : %ld\t%s ",mSqlCode, LPCTSTR(pErr-> Description));
m_SQLState.Format( "%s ",(char*)pErr-> SQLState);
printf( "%s // %s\n ",m_SQLState,m_ErrMsg);
}
}
m_DbConn-> Errors-> Clear();
}

CHmbAdoDBRs::CHmbAdoDBRs( )
{
}

CHmbAdoDBRs::~CHmbAdoDBRs()
{

}

BOOL CHmbAdoDBRs::Open( CHmbAdoDB *pDB, LPCSTR szSource,long option )
{
CString strSQL;
strSQL = CString(szSource);
strSQL.TrimLeft();
strSQL.TrimRight();
_variant_t vRecsAffected(0L);
// CREATEiNSTANCE( m_Rs,Recordset) ;
// m_Rs-> PutRefActiveConnection( pDB-> m_DbConn );
try
{
m_Rs = pDB-> m_DbConn-> Execute(_bstr_t(strSQL),
&vRecsAffected,
adOptionUnspecified);
m_Rs-> AddRef();
// m_Rs-> Open(szSource, vtMissing, adOpenKeyset, adLockBatchOptimistic, adOptionUnspecified);
// m_Rs-> Open(szSource, vtMissing, adOpenKeyset, adLockReadOnly, option);
// m_Rs-> Open(szSource,pDB-> m_DbConn.GetInterfacePtr(),adOpenDynamic,adLockOptimistic, adCmdText);

}
catch( _com_error &e)
{
//ErrorMessage();
m_Rs-> Close();
m_Rs-> Release();
return FALSE;
}
catch(...)
{
m_Rs-> Close();
m_Rs-> Release();
return FALSE;
}
return TRUE;
}

void CHmbAdoDBRs::Close()
{
m_Rs-> Close();
m_Rs-> Release();
}
void CHmbAdoDBRs::GetRs(_variant_t x,_bstr_t &ret)
{
ret = (m_Rs-> Fields-> Item[x]-> Value);
}

void CHmbAdoDBRs::GetRs(_variant_t x,CString &ret)
{
_bstr_t retVal;

try{
retVal = (m_Rs-> Fields-> Item[x]-> Value);
}
catch(...){

ret = " ";
return;
}

ret = CString((char*) retVal);
}

BOOL CHmbAdoDBRs::IsEOF()
{
return m_Rs-> adoEOF;
}

BOOL CHmbAdoDBRs::IsOpen()
{
return ( (m_Rs-> GetState() != 0) ? TRUE : FALSE );
}

BOOL CHmbAdoDBRs::MoveNext() { return (FAILED(m_Rs-> MoveNext()) ? FALSE : TRUE ); }
BOOL CHmbAdoDBRs::MovePrev() { return (FAILED(m_Rs-> MovePrevious()) ? FALSE : TRUE ); }
BOOL CHmbAdoDBRs::MoveFirst() { return (FAILED(m_Rs-> MoveFirst()) ? FALSE : TRUE ) ; }
BOOL CHmbAdoDBRs::MoveLast() { return (FAILED(m_Rs-> MoveLast()) ? FALSE : TRUE ) ; }
以上為一個ADO的封裝類.
c語言如何連接access資料庫
現在一般是用ADO的方法.

熱點內容
域伺服器ntp怎麼配置 發布:2025-06-29 20:15:50 瀏覽:542
我的世界哪些伺服器是創造的 發布:2025-06-29 20:08:37 瀏覽:288
A10緩存 發布:2025-06-29 19:59:45 瀏覽:19
編譯編輯裝入執行的正確順序 發布:2025-06-29 19:51:02 瀏覽:100
預處理編譯匯編 發布:2025-06-29 19:46:07 瀏覽:170
雲伺服器有哪幾家 發布:2025-06-29 19:32:55 瀏覽:720
我的世界地下城商店伺服器 發布:2025-06-29 19:18:53 瀏覽:194
我的世界伺服器掉幀率怎麼辦 發布:2025-06-29 19:17:14 瀏覽:322
電梯演算法實現 發布:2025-06-29 19:17:07 瀏覽:149
c語言16進製表示 發布:2025-06-29 19:17:04 瀏覽:43