C语言连接数据库
- 格式:doc
- 大小:45.50 KB
- 文档页数:5
1、SQLHDBChdbc:代表一个数据库连接句柄。和Socket里边的Socket连接类似,要访问数据库,先要连接到数据库。
SQLHDBC:SQL、H句柄、DB(DataBase)、C(Connection)
2、SQLHSTMThstmt:代表一个SQL语句。STMT(Statement,语句)
3、SQLRETURN:执行结果。
4、ODBC中字符串用SQLCHAR,SQLCHAR其实就是char的别名。
SQLCHARConnStrIn[MAXBUFLEN]和charConnStrIn[MAXBUFLEN]一样。
5、ConnStrIn:连接字符串,你要连接到的数据库的驱动、ip地址、用户名密码、数据库名(Catalog)等等都在连接字符串里描述。
DRIVER:使用的驱动名;
SERVER:ip地址;
UID:用户名(UserID);
PWD(Password):密码。
DataBase:数据库名,Catalog。
6、SQLDriverConnect:创建到数据库的连接,使用ConnStrIn连接。result表示执行结果。如果失败了SQL_ERROR==result。ShowDBConnError(hwnd,hdbc); 来显示“连接错误”。
7、 result=SQLPrepare(hstmt,(SQLCHAR*)"insertintoT_Person(FAge,FName)
values(20,'kider')",SQL_NTS)。创建SQL语句的句柄。
result=SQLExecute(hstmt);:执行SQL语句。
SQLFreeStmt(hstmt,SQL_CLOSE);:释放SQL语句
SQLDisconnect(hdbc);:断开数据库连接。
#include"stdafx.h"
#include
#include
// 必须加入以下三个头文件即数据库的头文件
#include
#include
#include
#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 DBTest(HWND hwnd);
// 主调函数
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*)pM sg,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=admin;DATABASE=mydb;CharSet=gbk ;";
SQLCHAR ConnStrOut[MAXBUFLEN];