Heim Datenbank MySQL-Tutorial 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>
Nach dem Login kopieren
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>}  
Nach dem Login kopieren
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>}  
Nach dem Login kopieren

运行结果:

bitsCN.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße Artikel -Tags

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So geben Sie Bruchzeichen am Computer ein (einfache und schnelle Methode zur Eingabe von Bruchzeichen) So geben Sie Bruchzeichen am Computer ein (einfache und schnelle Methode zur Eingabe von Bruchzeichen) May 04, 2024 pm 12:01 PM

So geben Sie Bruchzeichen am Computer ein (einfache und schnelle Methode zur Eingabe von Bruchzeichen)

Was soll ich tun, wenn mein Win11-Hintergrundbild gesperrt ist und nicht geändert werden kann? Was kann ich tun, wenn mein Computerhintergrund gesperrt ist und nicht geändert werden kann? Was soll ich tun, wenn mein Win11-Hintergrundbild gesperrt ist und nicht geändert werden kann? Was kann ich tun, wenn mein Computerhintergrund gesperrt ist und nicht geändert werden kann? Jun 09, 2024 pm 08:58 PM

Was soll ich tun, wenn mein Win11-Hintergrundbild gesperrt ist und nicht geändert werden kann? Was kann ich tun, wenn mein Computerhintergrund gesperrt ist und nicht geändert werden kann?

Wie man Deepseek vor Ort fein abgestimmt Wie man Deepseek vor Ort fein abgestimmt Feb 19, 2025 pm 05:21 PM

Wie man Deepseek vor Ort fein abgestimmt

Der einfachste Weg, den Bildschirm Ihres Telefons auf Ihren Computer zu spiegeln (ein Schritt, um Ihren Telefonbildschirm ganz einfach auf Ihren Computer zu projizieren) Der einfachste Weg, den Bildschirm Ihres Telefons auf Ihren Computer zu spiegeln (ein Schritt, um Ihren Telefonbildschirm ganz einfach auf Ihren Computer zu projizieren) May 09, 2024 pm 07:13 PM

Der einfachste Weg, den Bildschirm Ihres Telefons auf Ihren Computer zu spiegeln (ein Schritt, um Ihren Telefonbildschirm ganz einfach auf Ihren Computer zu projizieren)

Das Desktopsymbol verschwindet und muss neu angezeigt oder in der Größe geändert werden? Einführung in schnelle Lösungen Das Desktopsymbol verschwindet und muss neu angezeigt oder in der Größe geändert werden? Einführung in schnelle Lösungen Jun 02, 2024 pm 10:37 PM

Das Desktopsymbol verschwindet und muss neu angezeigt oder in der Größe geändert werden? Einführung in schnelle Lösungen

Deepseek Image Generation Tutorial Deepseek Image Generation Tutorial Feb 19, 2025 pm 04:15 PM

Deepseek Image Generation Tutorial

Was soll ich tun, wenn mein Win10-Passwort nicht den Passwortrichtlinienanforderungen entspricht? Was kann ich tun, wenn mein Computerpasswort nicht den Richtlinienanforderungen entspricht? Was soll ich tun, wenn mein Win10-Passwort nicht den Passwortrichtlinienanforderungen entspricht? Was kann ich tun, wenn mein Computerpasswort nicht den Richtlinienanforderungen entspricht? Jun 25, 2024 pm 04:59 PM

Was soll ich tun, wenn mein Win10-Passwort nicht den Passwortrichtlinienanforderungen entspricht? Was kann ich tun, wenn mein Computerpasswort nicht den Richtlinienanforderungen entspricht?

Wie schalte ich Ortungsdienste in Win10 aus? Tipps zum Ausschalten des Ortungssystems auf Ihrem Computer Wie schalte ich Ortungsdienste in Win10 aus? Tipps zum Ausschalten des Ortungssystems auf Ihrem Computer Jun 07, 2024 pm 04:02 PM

Wie schalte ich Ortungsdienste in Win10 aus? Tipps zum Ausschalten des Ortungssystems auf Ihrem Computer

See all articles