c数据库引用
#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的方法.
Ⅱ c语言怎样连接数据库(c语言和数据库连接)
1、配置ODBC数据源。
2、使用SQL函数进行连接。
对于1、配置数据源,配置完以后就可以编程操作数据库了。
对于2、使用SQL函数进行连接,参考代码如下:
#include
#include
#include
voidmain()
{
HENVhenv;//环境句柄
HDBChdbc;//数据源句柄
HSTMThstmt;//执行语句句柄
unsignedchardatasource[]="数据源名称";//即源中设置的源名称
unsignedcharuser[]="用户名";//数袭此据库的帐户拍野迅名
unsignedcharpwd[]="密码";//数据库的密码
unsignedcharsearch[]="selectxmfromstuwherexh=0";
SQLRETURNretcode;//记录各SQL函数的返回情况
//分配环境句柄
retcode=SQLAllocEnv(&henv);//等介于(SQL_HANDLE_ENV,SQL_NULL
,&henv);
//设置ODBC环境版本号为3.0
retcode=(henv,SQL_ATTR_ODBC_VERSION,(void*)SQL_OV_ODBC3,0);
//分配连接句柄
retcode=(henv,&hdbc);//等介于(SQL_HANDLE_DBC,henv,&hdbc);
//设置连接属性,登录超时为*rgbValue秒(可以没有)
//(hdbc,SQL_LOGIN_TIMEOUT,(SQLPOINTER)(rgbValue),0);
//直接连接数据源
//如果是windows身份验证,第二、三参数可以是
,也可以是任何字串
//SQL_NTS即"
retcode=SQLConnect(hdbc,datasource,SQL_NTS,user,SQL_NTS,pwd,SQL_NTS);
//分配语句句柄
retcode=(hdbc,&hstmt);//等介于(SQL_HANDLE_STMT,hdbc,&hstmt);
//直接执行查询语句
retcode=(hstmt,search,SQL_NTS);
//将数据缓冲区绑定数据库中的相应脊尘字段(i是查询结果集列号,queryData是绑定缓冲区,BUFF_LENGTH是缓冲区长度)
SQLBindCol(hstmt,i,SQL_C_CHAR,queryData[i-1],BUFF_LENGTH,0);
//遍历结果集到相应缓冲区queryData
SQLFetch(hstmt);
/*
*对遍历结果的相关操作,如显示等
*/
//注意释放顺序,否则会造成未知错误!
(SQL_HANDLE_STMT,hstmt);
(hdbc);
(SQL_HANDLE_DBC,hdbc);
(SQL_HANDLE_ENV,henv);
}
Ⅲ c语言如何调用Mysql数据库文件并进行对数据库的操作呢。
MYSQL m_sqlCon;//声明
mysql_init(&m_sqlCon);//初始化
mysql_real_connect(&m_sqlCon, "127.0.0.1", abc, "root", "hibernate", atoi("3306"),NULL,0)//链接
mysql_query(&m_sqlCon, "SET NAMES GB2312"); //设置查询编码格式
res = mysql_query(&m_sqlCon,"select * from ms_sendlist where flag = 1 order by style desc");//查询
mysql_query(&m_sqlCon, sql);//插入,删除
Ⅳ c璇瑷涓璁块梾鏁版嵁搴挞兘鐢ㄥ埌浜嗗摢浜涚被锛
鍦–璇瑷涓锛岃块梾鏁版嵁搴挞氩父娑夊强浣跨敤鏁版嵁搴撴搷浣滃簱锛岃繖浜涘簱鎻愪緵浜嗕竴浜涚被鍜屽嚱鏁版潵镓ц屾暟鎹搴撴搷浣溿傛渶甯哥敤镄勬暟鎹搴撴搷浣滃簱鏄疧DBC锛圤pen Database Connectivity锛夛纴瀹冨厑璁镐娇鐢ㄦ爣鍑嗙殑API鎺ュ彛𨱒ヨ繛鎺ュ拰镎崭綔涓嶅悓绫诲瀷镄勬暟鎹搴撱备互涓嬫槸鍦–璇瑷涓璁块梾鏁版嵁搴撴椂鍙鑳芥秹鍙婄殑涓浜涚被鍜岀浉鍏虫傚康锛
1. **ODBC API锛** ODBC API鏄鏁版嵁搴撹块梾镄勬牳蹇冿纴瀹冩彁渚涗简涓绯诲垪鍑芥暟鐢ㄤ簬杩炴帴鏁版嵁搴撱佹墽琛孲QL镆ヨ銆佽幏鍙栨煡璇㈢粨鏋灭瓑镎崭綔銆
2. **鏁版嵁搴撹繛鎺ョ被锛** 鏁版嵁搴撹繛鎺ョ被鐢ㄤ簬寤虹珛鍜岀$悊涓庢暟鎹搴撶殑杩炴帴銆傚湪ODBC涓锛屽彲浠ヤ娇鐢╜SQLHDBC`鏁版嵁绫诲瀷琛ㄧず鏁版嵁搴撹繛鎺ュ彞镆勚
3. **SQL璇鍙ユ墽琛岀被锛** 杩欎簺绫荤敤浜庢墽琛孲QL镆ヨ㈣鍙ワ纴鍖呮嫭SELECT銆両NSERT銆乁PDATE銆丏ELETE绛夈傚彲浠ヤ娇鐢╜SQLExecDirect`鍑芥暟镓ц孲QL璇鍙ャ
4. **缁撴灉闆嗙被锛** 褰撴墽琛孲ELECT镆ヨ㈡椂锛屼细鐢熸垚涓涓缁撴灉闆嗭纴琛ㄧず镆ヨ㈢粨鏋溿傚彲浠ヤ娇鐢╜SQLHSTMT`鏁版嵁绫诲瀷琛ㄧず缁撴灉闆嗗彞镆勶纴骞朵娇鐢╜SQLFetch`鍑芥暟銮峰彇缁撴灉闆嗕腑镄勬暟鎹銆
5. **阌栾澶勭悊绫伙细** 鐢ㄤ簬澶勭悊鏁版嵁搴撴搷浣滀腑镄勯敊璇鍜屽纾甯搞傚彲浠ヤ娇鐢╜SQLHENV`鏁版嵁绫诲瀷琛ㄧず鐜澧冨彞镆勶纴骞朵娇鐢╜SQLError`鍑芥暟銮峰彇阌栾淇℃伅銆
6. **鍙傛暟鍖栨煡璇㈢被锛** 鐢ㄤ簬镓ц屽弬鏁板寲镄凷QL镆ヨ锛岄槻姝SQL娉ㄥ叆绛夊畨鍏ㄩ梾棰樸
7. **浜嫔姟绠$悊绫伙细** 鐢ㄤ簬绠$悊鏁版嵁搴撶殑浜嫔姟镎崭綔锛屽寘𨰾鎻愪氦鍜屽洖婊氢簨锷°
8. **鏁版嵁搴撹繛鎺ユ睁绫伙细** 鏁版嵁搴撹繛鎺ユ睁鐢ㄤ簬绠$悊澶氢釜鏁版嵁搴撹繛鎺ワ纴鎻愰珮镐ц兘鍜岃祫婧愬埄鐢ㄧ巼銆
闇瑕佹敞镒忕殑鏄锛孋璇瑷链韬骞舵病链夌被镄勬傚康锛岃屾槸浣跨敤缁撴瀯浣撱佹寚阍埚拰鍑芥暟绛夋潵瀹炵幇闱㈠悜瀵硅薄镄勫姛鑳姐傛暟鎹搴撴搷浣滃簱浼氭彁渚涗竴浜涙暟鎹绫诲瀷鍜屽嚱鏁版潵灏佽呮暟鎹搴撶浉鍏虫搷浣滐纴浣呜繖浜涘苟涓嶆槸浼犵粺镒忎箟涓婄殑绫汇傚湪瀹为檯寮鍙戜腑锛屽彲浠ユ牴鎹镓浣跨敤镄勬暟鎹搴撴搷浣滃簱镄勬枃妗e拰绀轰緥𨱒ヤ简瑙e备綍杩涜屾暟鎹搴撴搷浣溿
Ⅳ C璇瑷镐庝箞杩炴帴oracle鏁版嵁搴掳纻
瑕佸湪C璇瑷涓杩炴帴Oracle鏁版嵁搴掳纴鎭ㄥ彲浠ヤ娇鐢∣racle鎻愪緵镄凮DBC锛圤pen Database Connectivity锛夋帴鍙f潵瀹炵幇銆备互涓嬫槸杩炴帴Oracle鏁版嵁搴撶殑涓鑸姝ラわ细
纭淇濇偍宸插畨瑁呬简阃傚綋镄凮DBC椹卞姩绋嫔簭鍜孙racle瀹㈡埛绔杞浠躲
鍦–浠g爜涓鍖呭惈蹇呰佺殑澶存枃浠讹纴濡<stdio.h>銆<stdlib.h>鍜<sql.h>銆
浣跨敤ODBC鍑芥暟锛屽係QLAllocHandle()鍜孲QLConnect()锛屽垎閰嶅拰杩炴帴鏁版嵁搴撶殑鍙ユ焺銆
閰岖疆杩炴帴瀛楃︿覆锛屾寚瀹氭墍闇镄勮繛鎺ュ弬鏁帮纴渚嫔傛暟鎹搴揿悕銆佺敤鎴峰悕鍜屽瘑镰佺瓑淇℃伅銆
浣跨敤SQLExecDirect()鍑芥暟镓ц孲QL璇鍙ユ垨璋幂敤鐩稿叧镄凮DBC鍑芥暟𨱒ユ墽琛屽叾浠栨暟鎹搴撴搷浣滐纴濡傛煡璇㈡暟鎹銆佹彃鍏ユ暟鎹绛夈
阃氲繃SQLFetch()鍑芥暟銮峰彇镆ヨ㈢粨鏋滈泦锛屽苟镙规嵁闇瑕佽繘琛屽勭悊鍜岃緭鍑恒
杩椤彧鏄涓涓锘烘湰镄勭ず渚嬶纴瀹为檯𨱍呭喌鍙鑳戒细锲犱娇鐢ㄧ殑缂栬疟鍣ㄥ拰镎崭綔绯荤粺钥屾湁镓涓嶅悓銆傚缓璁鍙傝幂浉鍏崇殑Oracle鍜孙DBC鏂囨。锛屼互鍙娄娇鐢ㄩ傚簲鎭ㄧ幆澧幂殑ODBC绀轰緥浠g爜𨱒ヨ繘琛屾洿鍏蜂綋镄勬搷浣溿
Ⅵ 如何在c程序中调用access数据库
c语言不能连接数据库,只能用文件保存数据;
我在学习的时候也曾遇到过这样的问题,请教老师,老师告诉我C语言主要用来开发系统的,还有就是用来开发游戏的。一般用文件保存数据。不会用到数据库;
要用数据库的语言有VB,java,c#,Dephi等等
Ⅶ 用C语言怎么实现与数据库的连接
#include<mysql/mysql.h>
#include<stdio.h>
intmain()
{
MYSQL*conn;
MYSQL_RES*res;
MYSQL_ROWrow;
char*server="localhost";//本地连接
char*user="root";//
char*password="525215980";//mysql密码
char*database="student";//数据库名
char*query="select*fromclass";//需要查询的语句
intt,r;
conn=mysql_init(NULL);
if(!mysql_real_connect(conn,server,user,password,database,0,NULL,0))
{
printf("Errorconnectingtodatabase:%s ",mysql_error(conn));
}else{
printf("Connected... ");
}
t=mysql_query(conn,query);
if(t)
{
printf("Errormakingquery:%s ",mysql_error(conn));
}else{
printf("Querymade... ");
res=mysql_use_result(conn);
if(res)
{
while((row=mysql_fetch_row(res))!=NULL)
{
//printf("num=%d ",mysql_num_fields(res));//列数
for(t=0;t<mysql_num_fields(res);t++)
printf("%8s",row[t]);
printf(" ");
}
}
mysql_free_result(res);
}
mysql_close(conn);
return0;
}
(7)c数据库引用扩展阅读
C语言使用注意事项:
1、指针是c语言的灵魂,一定要灵活的使用它:
(1)、指针的声明,创建,赋值,销毁等
(2)、指针的类型转换,传参,回调等
2、递归调用也会经常用到:
(1)、递归遍历树结构
(2)、递归搜索