c++ 连接MySql数据库并执行插入,查询数据测试代码-阿里云开发者社区

开发者社区> 真爱无限> 正文

c++ 连接MySql数据库并执行插入,查询数据测试代码

简介: #include "stdafx.h" #include #include #include //连接库:odbc32.lib odbccp32.
+关注继续查看
#include "stdafx.h"
#include <windows.h>
#include <windowsx.h>
#include <SQL.H>//连接库:odbc32.lib odbccp32.lib
#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;}
/*

*/
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:
		{
			Test(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 Test(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=123456;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);
    //result = SQLPrepare(hstmt,(SQLCHAR*)"select id,name,age from student",SQL_NTS);//如果是查询
     result = SQLPrepare(hstmt,(SQLCHAR*)"insert into student(id,name,age) values(3,'wanger',30)",SQL_NTS);
	CHECKDBSTMTERROR(hwnd,result,hstmt);
     result =SQLExecute(hstmt);
    CHECKDBSTMTERROR(hwnd,result,hstmt);
//显示查询数据开始
/*  SQLINTEGER cbsatid=SQL_NTS;
    TCHAR info[50]={0};
    while (SQLFetch(hstmt)!=SQL_NO_DATA_FOUND)
    {
        SQLCHAR name[20]; 
        SQLINTEGER id;
        SQLSMALLINT age;
        
        SQLGetData(hstmt,1,SQL_C_LONG,&id,sizeof(SQLINTEGER),&cbsatid);
        SQLGetData(hstmt,2,SQL_C_CHAR,name,20,&cbsatid);
        SQLGetData(hstmt,3,SQL_C_TINYINT,&age,sizeof(SQLSMALLINT),&cbsatid);
        wsprintf(info,"%i,%s,%i",id,name,age);
        MessageBox(NULL,info,"提示",MB_OK);

    }
*/
//显示查询数据结束
    SQLFreeStmt(hstmt,SQL_CLOSE);
    SQLDisconnect(hdbc);
    SQLFreeHandle(SQL_HANDLE_DBC,hdbc);
    SQLFreeHandle(SQL_HANDLE_ENV,henv);
	MessageBox(hwnd,TEXT("执行成功"),TEXT("标题"),MB_OK);
}





版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
【hibernate 执行方法未插入数据库】hibernate的save方法成功执行,但是未插入到数据库
今天做项目,碰上这个问题: hibernate的save方法成功执行,但是未插入到数据库。 Dao层代码: 1 @Override 2 public void save(T t) { 3 this.
853 0
C#中与Oracle连接的代码(原创)
注意:一定要添加这个: 项目->添加引用->.NET->System.Data.OracleClient.dll     using System;using System.Data;using System.
841 0
使用Java代码连接SAP ABAP Netweaver服务器
使用Java代码连接SAP ABAP Netweaver服务器
13 0
《SQL与关系数据库理论——如何编写健壮的SQL代码》》一1.4 原始模型回顾
本节书摘来华章计算机《SQL与关系数据库理论——如何编写健壮的SQL代码》一书中的第1章 ,第1.4节 C. J. Date 著 单世民 何英昊 许侃 译 更多章节内容可以访问云栖社区“华章计算机”公众号查看。
967 0
+关注
真爱无限
主要技术.net sqlserver mysql。
302
文章
1
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载