zoukankan      html  css  js  c++  java
  • 5、通过api操作mysql的小例子

    今天写了个简单的mysql程序,通过C语言。

    示例代码

    View Code
    #include "stdio.h"
    #include
    "mysql.h"
    #include
    <pthread.h>
    #include
    "stdlib.h"
    #include
    "string"
    #include
    "iostream"

    using namespace std;

    typedef
    struct SqlInfo
    {
    string server;
    string user;
    string passwd;
    string db;
    }SqlInfo;

    void* showdatabase(void* arg)
    {
    SqlInfo
    *p = (SqlInfo*)arg;

    MYSQL
    *mysql_test;
    MYSQL_RES
    *ret;
    MYSQL_ROW row;

    // char *server = "localhost";
    // char *user = "root";
    // char *passwd = "1234"; //伪密码
    // char *db = "mysql";

    mysql_test
    = mysql_init(NULL);
    if (!mysql_real_connect(mysql_test, p->server.c_str(), p->user.c_str(), p->passwd.c_str(), p->db.c_str(), 0, NULL, 0))
    {
    fprintf(stderr,
    "%s\n", mysql_error(mysql_test));
    return NULL;
    }

    if (mysql_query(mysql_test, "show databases"))
    {
    fprintf(stderr,
    "%s\n", mysql_error(mysql_test));
    return NULL;
    }
    ret
    = mysql_use_result(mysql_test);

    printf(
    "Show Databases:\n");
    // while((row = mysql_fetch_row(ret)) != NULL)
    // {
    // printf("%s\n", row[0]);
    // }

    //equal to the below
    unsigned int num_fields;
    unsigned
    int i;

    num_fields
    = mysql_num_fields(ret);
    while ((row = mysql_fetch_row(ret)))
    {
    unsigned
    long *lengths;
    lengths
    = mysql_fetch_lengths(ret);
    for(i = 0; i < num_fields; i++)
    {
    printf(
    "[%.*s] ", (int) lengths[i], row[i] ? row[i] : "NULL");
    }
    printf(
    "\n");
    }

    mysql_free_result(ret);
    mysql_close(mysql_test);
    }

    int main(int argc, char* argv[])
    {
    if (argc < 5)
    {
    cout
    << "Usage: app server user passwd db" << endl;
    return -1;
    }

    SqlInfo my_info;
    my_info.server
    = argv[1];
    my_info.user
    = argv[2];
    my_info.passwd
    = argv[3];
    my_info.db
    = argv[4];

    pthread_t thread1;

    pthread_create(
    &thread1, NULL, showdatabase, (void*)&my_info);
    pthread_join(thread1,NULL);

    return 0;
    }

    1、遇到的问题

    1)error while loading shared libraries: libmysqlclient.so.16: cannot open shared object file: No such file or directory

    再网上下载了一个so文件。

    //locate libmysqlclient.so.16

    复制文件到路径:

        /usr/local/mysql/lib/mysql/libmysqlclient.so.16

    修改文件:

        vi /etc/ld.so.conf

        增加一行 /usr/local/mysql/lib/mysql

    然后执行ldconfig生效。

    2、关于C语言中调用mysql API

    gcc -o showdata $(mysql_config --cflags) showdata.cpp  $(mysql_config --libs)

        mysql_config为MySQL中一个特殊的脚本,为编译MySQL客户端,并连接到MySQL服务器提供有用的信息。【3

        当然也要吧在makefile中指定如上选项,或

    INC+=-I/usr/include/mysql
    LIB=-lmysqlclient -lpthread -lssl

    附:

    mysql的安装:【45

    要注意的一点是,安装的mysql版本要与操作系统版本匹配。

    安装完后,通过以下命令设置密码:

    /usr/bin/mysqladmin -u root password 'new-password'

    /usr/bin/mysqladmin -u root -h love password 'new-password'

    Alternatively you can run:

    /usr/bin/mysql_secure_installation


    You can start the MySQL daemon with:
    rcmysql start
    You can test the MySQL daemon with mysql-test package

    参考

    1http://download.csdn.net/source/3528499

    2http://blog.sina.com.cn/s/blog_4ab24dd50100wnkv.html

    3http://blog.sina.com.cn/s/blog_59d470310100i16r.html

    4http://www.iteye.com/topic/647152

    5http://www.mysql.com/downloads/mysql/#downloads

    【6】 http://wenku.baidu.com/view/5e093ddc5022aaea998f0fbc.html

  • 相关阅读:
    MVC总结
    HTML+CSS总结
    常用正则表达式
    从你的全世界切过(胡说八道支持向量机SVM小故事)
    Beta分布
    贝叶斯决策理论
    Linux(Ubuntu)下载安装破解Matlab2016
    贝叶斯规则
    多元分布
    条件分布
  • 原文地址:https://www.cnblogs.com/mydomain/p/2144961.html
Copyright © 2011-2022 走看看