【VC++】SQL代碼

#include "stdafx.h"
#include <windows.h>
#include <windowsx.h>
#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;} //添加的代碼
/*
Template designed by RuPeng.com. Please visit http://www.rupeng.com for more information
如鵬網(http://www.rupeng.com)大學生計算機學習社區,提供大量免費視頻學習教程,提供個性化一對一學習指導
*/
BOOL WINAPI Main_Proc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    switch(uMsg)
    {
        HANDLE_MSG(hWnd, WM_INITDIALOG, Main_OnInitDialog);
        HANDLE_MSG(hWnd, WM_COMMAND, Main_OnCommand);
        HANDLE_MSG(hWnd,WM_CLOSE, Main_OnClose);
    }
    return FALSE;
}
BOOL Main_OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam)
{
    return TRUE;
}
void Main_OnCommand(HWND hwnd, int id, HWND hwndCtl, UINT codeNotify)
{
    switch(id)
    {
        case IDC_OK:
        {
            DBTest(hwnd);
        }
        break;
        default:
        break;
    }
}
void Main_OnClose(HWND hwnd)
{
    EndDialog(hwnd, 0);
}
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_NTStellingthefunctionthepreviousparameterisNull-Terminated String,
     //pleasealculatethestringlengthforme
     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);
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章