当前位置:首页 » 操作系统 » 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的方法.

热点内容
python设置代理服务器 发布:2025-06-29 20:41:21 浏览:103
cf代练脚本哪里有卖 发布:2025-06-29 20:26:51 浏览:31
域服务器ntp怎么配置 发布:2025-06-29 20:15:50 浏览:543
我的世界哪些服务器是创造的 发布: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 浏览:324