VC怎么读写mysql里的数据啊,有没有比较简单明了的例子。另,我想多个客户访问并更新一个服务器数据,怎样写才能保证相互之间数据不冲突且实时更新啊?客户端↔服务器端↔数据库?每个客户端能同时增减数据库么?(虽然这样不安全)请大家给点意见和建议

解决方案 »

  1.   

    给你一份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);}
      

  2.   

    忘了说了需要MySQL ODBC 5.1 Driver,至于你所说的,可以去参考下并发,就很好理解了
      

  3.   

    1.调用MySQL的API
    2.ODBC其他的看看并发操作吧。