C ++ and C # simple sample code for accessing MySQL

Source: Internet
Author: User

Paste the sample code. It is very suitable for beginners.

1) C # access MySQL

Using system; using system. collections. generic; using system. text; using MySQL. data. mysqlclient; using system. data; using system. data. common; namespace sybaseutiltest {class program {// http://bugs.mysql.com/47422, interested friends, you can see how this bug is going static void testdataadapter () {try {mysqlclientfactory factory = mysqlclientfactory. instance; dbconnection conn = factory. createconnection (); Conn. connectionstring = string. format ("Server = {0}; user id = {1}; Password = {2}; database = {3}; Port = {4}; pooling = false ", "localhost", "root", "passwd", "test", 3306); Conn. open (); dbdataadapter da = factory. createdataadapter (); DA. selectcommand = Conn. createcommand (); DA. selectcommand. commandtext = "select * From t12345"; DA. deletecommand = Conn. createcommand (); DA. deletecommand. commandtext = "delete from t12345 where id = @ ID"; dbparameter Param = factory. createparameter (); Param. parametername = "@ ID"; Param. dbtype = dbtype. int32; Param. sourcecolumn = "ID"; Param. sourceversion = datarowversion. current; DA. deletecommand. parameters. add (PARAM); DA. deletecommand. updatedrowsource = updaterowsource. none; datatable dt = new datatable ("t12345"); DA. fill (DT); int Index = 0; foreach (datarow o in DT. rows) {If (O ["ID"]. equals (4) {console. writeline (string. format ("Index = {0}, to delete id = 4, col2 = {1}", index, O ["col2"]); break ;} index ++;} DT. rows [Index]. delete (); DA. update (DT); DT. acceptchanges (); DA. dispose (); Conn. close ();} catch (exception ex) {console. writeline (ex. source + "" + ex. message + "" + ex. stacktrace) ;}} static void main (string [] ARGs) {testdataadapter ();}}}

2) C ++ access (directly call the C-API)

#include <iostream>#include <windows.h>#include <mysql.h>#include <string>static const char host[32] = "localhost";static const char user[32] = "test";static const char passwd[32] = "passwd";static const char db[32] = "test";/**mysql> select * from t;+----+| id |+----+|  1 |+----+1 row in set (0.00 sec)mysql> delimiter //mysql> create procedure get_t(in t1 int)    -> begin    -> select id from t where id=t1;    -> end    -> //Query OK, 0 rows affected (0.05 sec)mysql> call get_t(1);    -> //+----+| id |+----+|  1 |+----+1 row in set (0.00 sec)Query OK, 0 rows affected (0.00 sec)*/void test_more_results(MYSQL* h){    char str[512] = "insert into test_num values(101);insert into test_num values(122);commit;";    int r = mysql_real_query(h, str, strlen(str));    if (r)    {        const char * error = mysql_error(h);        std::cout<<"*** Connection Error " << error << std::endl;    }    do    {        MYSQL_RES* res = mysql_store_result(h);        mysql_free_result(res);    }    while ( (0 == mysql_next_result(h)) );   }void test_proc_stmt(MYSQL* h){    MYSQL* mysql_ = h;    MYSQL_BIND          bind;    MYSQL_BIND          obind[1];    // test_more_results(mysql_);    MYSQL_STMT *hStmt = mysql_stmt_init(mysql_);    my_bool true_value= 1;    mysql_stmt_attr_set(hStmt, STMT_ATTR_UPDATE_MAX_LENGTH, (void*) &true_value);       char sql[] = "call get_t(?)";    //char sql[] = "select id from t where id=?";    if (mysql_stmt_prepare(hStmt, sql, strlen(sql)))    {        std::cout<<__LINE__<<": stmt prepare error:  "<< (mysql_stmt_error(hStmt))<<std::endl;        mysql_stmt_reset(hStmt);        if (mysql_stmt_prepare(hStmt, sql, strlen(sql)))        {            std::cout<<__LINE__<<": stmt prepare error:  "<< (mysql_stmt_error(hStmt))<<std::endl;            mysql_close(mysql_);            exit( -1);        }    }    int id = 1;    unsigned long id_len = 0;    memset(&bind, 0, sizeof(bind));    bind.buffer_type = FIELD_TYPE_LONG;    bind.buffer = (void*)&id;    bind.is_unsigned = true;    bind.length = &id_len;    // bind[0].buffer_length = sizeof(id);    // bind[0].is_null = 0;       if (mysql_stmt_bind_param(hStmt,(MYSQL_BIND*)(&bind)) != 0)    {        std::cout<<__LINE__<<": stmt prepare error:  "<< (mysql_stmt_error(hStmt))<<std::endl;        mysql_close(mysql_);        exit( -1);    }    if (mysql_stmt_execute(hStmt) != 0)    {        std::cout<<__LINE__<<": stmt prepare error:  "<< (mysql_stmt_error(hStmt))<<std::endl;        mysql_close(mysql_);        exit( -1);    }    int t2;    memset(obind, 0, sizeof(obind));    obind[0].buffer_type= MYSQL_TYPE_LONG;    obind[0].buffer= (char *)&t2;    obind[0].buffer_length = sizeof(t2);       if (mysql_stmt_bind_result(hStmt, (MYSQL_BIND*)&obind[0]) != 0)    {        std::cout<<__LINE__<<": stmt prepare error:  "<< (mysql_stmt_error(hStmt))<<std::endl;        mysql_close(mysql_);        exit( -1);    }    if ( mysql_stmt_store_result(hStmt) != 0 )    {        std::cout<<__LINE__<<": stmt prepare error:  "<< (mysql_stmt_error(hStmt))<<std::endl;        mysql_close(mysql_);        exit( -1);    }          int rows = mysql_stmt_num_rows(hStmt);    for (int i=0; i<rows; i++)    {        if (mysql_stmt_fetch(hStmt) == 0)        {            std::cout<<"id = "<<t2<<std::endl;        }    }    mysql_stmt_free_result(hStmt);    mysql_stmt_close(hStmt);}//// Just for demo only.//int main(){    MYSQL*              mysql_ = NULL;    MYSQL_RES*          result_ = NULL;    MYSQL_ROW           row_;    mysql_ = mysql_init(mysql_);    // if (mysql_real_connect(mysql_, host, user, passwd, db, 3306, NULL, CLIENT_MULTI_STATEMENTS) == NULL)    if (mysql_real_connect(mysql_, host, user, passwd, db, 3306, NULL, CLIENT_MULTI_STATEMENTS) == NULL)    {        const char * error = mysql_error(mysql_);        std::cout<<"*** Connection Error " << error << std::endl;        return -1;    }    mysql_autocommit(mysql_, false);    std::string encodeStr = "set names 'gbk'";    mysql_real_query(mysql_, encodeStr.c_str(), encodeStr.size());       /*    const char* tmpTableName = "t";  // assume you are querying the table 't'    char str[512];    int cnt = 0;    sprintf(str,"select count(*) as cnt from %s", tmpTableName);    mysql_real_query(mysql_, str, strlen(str));    result_ = mysql_store_result(mysql_);    while (row_ = mysql_fetch_row(result_))    {        // get the field value        if (row_[0])        {            std::cout<<"count = "<<row_[0]<<std::endl;            // convert it into int            cnt = atoi(row_[0]);            std::cout<<"cnt value = "<<row_[0]<<std::endl;        }    }    mysql_free_result(result_);    test_more_results();    */    test_proc_stmt(mysql_);       do    {        MYSQL_RES* res = mysql_store_result(mysql_);        mysql_free_result(res);    }    while ( (0 == mysql_next_result(mysql_)) );       test_proc_stmt(mysql_);    mysql_close(mysql_);    return 0;}

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.