C语言连接数据库

  • 格式:doc
  • 大小:45.50 KB
  • 文档页数:5

下载文档原格式

  / 5
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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];