데이터 베이스 MySQL 튜토리얼 C API 连接MySql_MySQL

C API 连接MySql_MySQL

Jun 01, 2016 pm 01:49 PM
인터페이스 컴퓨터

bitsCN.com

编译环境:WIN7,VS2010,MYSQL版本5.0
因为VS2010自带的CRecordSet类不能与MYSQL5.0匹配,反正我的电脑上是一创建CRecordSet类VS就崩溃,
所以如果想用ODBC接口的话只能直接调用WINAPI,代码既难看又麻烦
于是根据MYSQL自带手册编写了自己的MYSQL类,调试成功,源代码如下:

pse">mysql.h
/*  <br> * [3/9/2012] <br> * Powered by akaka <br> * <br> * akaka_mysql_h <br> * <br> * C API连接MYSQL数据库 <br> * 一、包含/include 和 /lib <br> * 二、#include<windows.h> (不添加会导致编译时错误) <br> * 三、添加libmysql.lib <br> * 四、设置环境变量:这里直接将/lib 目录下的libmysql.dll复制到c:/windows/system32/ 目录下  <br> * <br> */<br>#pragma once  <br>#include "std_lib_facilities.h"  <br>#include <windows.h>  <br>#include <mysql.h>  <br>  <br>class CMysql{    <br>public:  <br>    CMysql();  <br>    ~CMysql();   <br>    void connect(const char *host, const char *user, const char *passwd,   <br>        const char *db, unsigned int port, const char *unix_socket, unsigned long client_flag);  <br>    void query(const char *query);    <br>    void printinfo ();  <br>    void printrows ();  <br>  <br>private:  <br>    MYSQL* _sql;  <br>    MYSQL_RES* _sqlres;     // result set   <br>private:  <br>    unsigned int _column;   // how many columns in a row in "result set"  <br>};  </mysql.h></windows.h></windows.h>
로그인 후 복사
pse">mysql.cpp
/*  <br> * [3/9/2012] <br> * Powered by akaka <br> * <br> *  <br> * akaka_mysql.cpp <br> */   <br>  <br>#include "akaka_mysql.h"  <br>  <br>//------------------------------------------------------------------------------  <br>  <br>CMysql::CMysql()  <br>{  <br>    if( (_sql = mysql_init(NULL)) == NULL)  <br>    {   throw runtime_error("failed in mysql_init!") ;}  <br>}  <br>  <br>CMysql::~CMysql()  <br>{  <br>    if(_sql)   <br>        mysql_close(_sql);  <br>}  <br>  <br>//------------------------------------------------------------------------------  <br>  <br>void CMysql::connect(const char *host, const char *user, const char *passwd,   <br>    const char *db, unsigned int port, const char *unix_socket, unsigned long client_flag)   <br>{  <br>    if (mysql_real_connect(_sql, host, user, passwd, db,  <br>         port, unix_socket, client_flag) == NULL)  <br>         throw runtime_error("failed in mysql_connect!");  <br>  <br>}  <br>  <br>//------------------------------------------------------------------------------   <br>void CMysql::query(const char *query)  <br>{  <br>    // mysql_query Returns:  <br>    // Zero if the query was successful. Non-zero if an error occurred.   <br>    if(mysql_query(_sql, query))  <br>        throw runtime_error("failed in mysql_query!");  <br>  <br>    _sqlres = mysql_store_result(_sql); // 保存结果集  <br>}  <br>  <br>//------------------------------------------------------------------------------    <br>void CMysql::printinfo()  <br>{  <br>    // count how many columns in a row in "result set"  <br>    _column = 0;  <br>       <br>    MYSQL_FIELD* sqlfield;  <br>    while(sqlfield = mysql_fetch_field(_sqlres)) //遍历字段  <br>    {     <br>        cout name         _column++;  <br>    }  <br>    cout }  <br>  <br>//------------------------------------------------------------------------------    <br>void CMysql::printrows()  <br>{  <br>    MYSQL_ROW sqlrow;  <br>    while( sqlrow = mysql_fetch_row(_sqlres)) // 遍历结果集  <br>    {  <br>        for(unsigned int i = 0; i         {  <br>            cout         }  <br>        cout     }     <br>}  
로그인 후 복사
pse">main.cpp
//------------------------------------------------------------------------------  <br>// main  <br>int main()  <br>{  <br>    const char* host = "localhost";  <br>    const char* user = "root";  <br>    const char* passwd = "1121";  <br>    const char* db = "my";  <br>    const unsigned int port = 3306;  <br>    const char* unix_socket = NULL; // If unix_socket is not NULL, the string specifies the socket   <br>                                    // or named pipe that should be used.   <br>                                    // Note that the host parameter determines the type of the connection.   <br>    const unsigned long client_flag = 0;  // The value of client_flag is usually 0, but can be set to a combination of the following flags to enable certain features:   <br>  <br>    try  <br>    {  <br>        CMysql mysql;  <br>        mysql.connect(host,user,passwd,db,port,unix_socket,client_flag);  <br>        mysql.query("SELECT * FROM myclass");  <br>        mysql.printinfo();  <br>        mysql.printrows();  <br>        return 0;  <br>    }catch(runtime_error&amp; e)  <br>    {  <br>        cerr         return 1;  <br>    }  <br>}  
로그인 후 복사

运行结果:

bitsCN.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

뜨거운 기사 태그

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

컴퓨터에서 분수 기호를 입력하는 방법(분수 기호를 입력하는 쉽고 빠른 방법) 컴퓨터에서 분수 기호를 입력하는 방법(분수 기호를 입력하는 쉽고 빠른 방법) May 04, 2024 pm 12:01 PM

컴퓨터에서 분수 기호를 입력하는 방법(분수 기호를 입력하는 쉽고 빠른 방법)

내 win11 배경화면이 잠겨서 변경할 수 없으면 어떻게 해야 합니까? 내 컴퓨터 배경화면이 잠겨서 변경할 수 없으면 어떻게 해야 합니까? 내 win11 배경화면이 잠겨서 변경할 수 없으면 어떻게 해야 합니까? 내 컴퓨터 배경화면이 잠겨서 변경할 수 없으면 어떻게 해야 합니까? Jun 09, 2024 pm 08:58 PM

내 win11 배경화면이 잠겨서 변경할 수 없으면 어떻게 해야 합니까? 내 컴퓨터 배경화면이 잠겨서 변경할 수 없으면 어떻게 해야 합니까?

현지에서 Deepseek을 미세 조정하는 방법 현지에서 Deepseek을 미세 조정하는 방법 Feb 19, 2025 pm 05:21 PM

현지에서 Deepseek을 미세 조정하는 방법

휴대폰 화면을 컴퓨터에 미러링하는 가장 쉬운 방법(휴대폰 화면을 컴퓨터에 쉽게 투영하는 한 단계) 휴대폰 화면을 컴퓨터에 미러링하는 가장 쉬운 방법(휴대폰 화면을 컴퓨터에 쉽게 투영하는 한 단계) May 09, 2024 pm 07:13 PM

휴대폰 화면을 컴퓨터에 미러링하는 가장 쉬운 방법(휴대폰 화면을 컴퓨터에 쉽게 투영하는 한 단계)

바탕 화면 아이콘이 사라지고 다시 표시하거나 크기를 조정해야 합니까? 빠른 솔루션 소개 바탕 화면 아이콘이 사라지고 다시 표시하거나 크기를 조정해야 합니까? 빠른 솔루션 소개 Jun 02, 2024 pm 10:37 PM

바탕 화면 아이콘이 사라지고 다시 표시하거나 크기를 조정해야 합니까? 빠른 솔루션 소개

DeepSeek 이미지 생성 자습서 DeepSeek 이미지 생성 자습서 Feb 19, 2025 pm 04:15 PM

DeepSeek 이미지 생성 자습서

내 Win10 암호가 암호 정책 요구 사항을 충족하지 않으면 어떻게 해야 합니까? 내 컴퓨터 암호가 정책 요구 사항을 충족하지 않으면 어떻게 해야 합니까? 내 Win10 암호가 암호 정책 요구 사항을 충족하지 않으면 어떻게 해야 합니까? 내 컴퓨터 암호가 정책 요구 사항을 충족하지 않으면 어떻게 해야 합니까? Jun 25, 2024 pm 04:59 PM

내 Win10 암호가 암호 정책 요구 사항을 충족하지 않으면 어떻게 해야 합니까? 내 컴퓨터 암호가 정책 요구 사항을 충족하지 않으면 어떻게 해야 합니까?

Win10에서 위치 서비스를 끄는 방법 컴퓨터에서 위치 확인 시스템을 끄는 방법 Win10에서 위치 서비스를 끄는 방법 컴퓨터에서 위치 확인 시스템을 끄는 방법 Jun 07, 2024 pm 04:02 PM

Win10에서 위치 서비스를 끄는 방법 컴퓨터에서 위치 확인 시스템을 끄는 방법

See all articles