VC读写Mysql的问题
VC怎么读写mysql里的数据啊,有没有比较简单明了的例子。
另,我想多个客户访问并更新一个服务器数据,怎样写才能保证相互之间数据不冲突且实时更新啊?
客户端?服务器端?数据库?
每个客户端能同时增减数据库么?(虽然这样不安全)
请大家给点意见和建议
[解决办法]
给你一份Win32的示例代码,MFC同理去掉hwnd即可。
#include <sql.h>#include <sqlext.h>#include <sqltypes.h>#include "resource.h"#include "MainDlg.h"#define LOGIN_TIMEOUT 30#define MAXBUFLEN 255#define CHECKDBSTMTERROR(hwnd,result,hstmt) if(SQL_ERROR==result){ShowDBStmtError(hwnd,hstmt);return;}void ShowDBError(HWND hwnd,SQLSMALLINT type,SQLHANDLE sqlHandle){ char pStatus[10], pMsg[101]; SQLSMALLINT SQLmsglen; char error[200] = {0}; SQLINTEGER SQLerr; long erg2 = SQLGetDiagRec(type, sqlHandle,1, (SQLCHAR *)pStatus,&SQLerr,(SQLCHAR *)pMsg,100,&SQLmsglen); wsprintf(error,"%s (%d)\n",pMsg,(int)SQLerr); MessageBox(hwnd,error,TEXT("数据库执行错误"),MB_ICONERROR|MB_OK);}void ShowDBConnError(HWND hwnd,SQLHDBC hdbc){ShowDBError(hwnd,SQL_HANDLE_DBC,hdbc);}void ShowDBStmtError(HWND hwnd,SQLHSTMT hstmt){ShowDBError(hwnd,SQL_HANDLE_STMT,hstmt);}void DBTest(HWND hwnd){ SQLHENV henv = NULL; SQLHDBC hdbc = NULL; SQLHSTMT hstmt = NULL; SQLRETURN result; SQLCHAR ConnStrIn[MAXBUFLEN] = "DRIVER={MySQL ODBC 5.1 Driver};SERVER=127.0.0.1;UID=root;PWD=root;DATABASE=test;CharSet=gbk;"; SQLCHAR ConnStrOut[MAXBUFLEN];//分配环境句柄 result = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);//设置管理环境属性 result = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0);//分配连接句柄 result = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);//设置连接属性 result = SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT, (void*)LOGIN_TIMEOUT, 0);//连接数据库 result = SQLDriverConnect(hdbc,NULL, ConnStrIn,SQL_NTS, ConnStrOut,MAXBUFLEN, (SQLSMALLINT *)0,SQL_DRIVER_NOPROMPT); if(SQL_ERROR==result) { ShowDBConnError(hwnd,hdbc); return; }//初始化语句句柄 result = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt); //SQL_NTS telling the function the previous parameter is Null-Terminated String, //please alculate the string length for me result = SQLPrepare(hstmt,(SQLCHAR*)"insert into T_Person(FAge,FName) values(20,'kider')",SQL_NTS);CHECKDBSTMTERROR(hwnd,result,hstmt); result =SQLExecute(hstmt); CHECKDBSTMTERROR(hwnd,result,hstmt);SQLFreeStmt(hstmt,SQL_CLOSE); SQLDisconnect(hdbc); SQLFreeHandle(SQL_HANDLE_DBC,hdbc); SQLFreeHandle(SQL_HANDLE_ENV,henv);MessageBox(hwnd,TEXT("执行成功"),TEXT("标题"),MB_OK);}
[解决办法]
1.调用MySQL的API
2.ODBC
其他的看看并发操作吧。
[解决办法]
多看书,多实验,
[解决办法]
你想做什么程序?有困难的话可以加我的QQ:1291196237.