//包括多线程的使用,数据库的操作和打开文件对话框的使用。
#include "stdafx.h" #include <windows.h> #include <windowsx.h> #include "resource.h" #include "MainDlg.h" #include <SQL.H>//连接库:odbc32.lib odbccp32.lib #include <SQLEXT.H>//数据库头文件 #include <SQLTYPES.H>//数据库头文件 #include <COMMDLG.H>//OPENFILENAME 头文件 #include<STRING.H> #define LOGIN_TIMEOUT 30 #define MAXBUFLEN 255 ///#define CHECKDBSTMTERROR(hwnd,result,hstmt) char szFile[MAX_PATH]; BOOL ImportStatus = FALSE; //导入状态标志 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=123456;DATABASE=Test;CharSet=gbk;"; SQLCHAR ConnStrOut[MAXBUFLEN]; 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) ",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); } //查检是否有错误 BOOL CHECKDBSTMTERROR(HWND hwnd,SQLRETURN result,SQLHSTMT hstmt) { if(SQL_ERROR==result) { ShowDBStmtError(hwnd,hstmt); return TRUE; } else { return FALSE; } } 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 openfile(HWND hwnd) { OPENFILENAME ofn;//定义一个OPENFILENAME类型的结构体。 ZeroMemory(&ofn,sizeof(ofn));//使用结构体变量前把该结构体变量各个位清零。 ofn.lStructSize = sizeof(ofn); ofn.lpstrFile = szFile; ofn.lpstrFile[0] = TEXT('