当前位置:Gxlcms > 数据库问题 > mysql编程

mysql编程

时间:2021-07-01 10:21:17 帮助过:2人阅读

初始化MYSQL对象的指针.

 

MYSQL *mysql_real_connect(MYSQL *mysql, const char *host, const char *user, const char *passwd, const char *db, unsigned int port, const char *unix_socket, unsigned long client_flag)

初始化MYSQL对象以后进行连接数据库

参数:

MYSQL *mysql:上面初始化以后的MYSQL对象指针

const char *host:数据库的地址

 const char *user:数据库登陆的用户名

const char *passwd:该用户的密码

const char *db:登陆的数据库名称

unsigned int port:端口号,根据host类型来决定,如果是本地的则为0

const char *unix_socket:网络类型,本地为NULL

unsigned long client_flag:连接属性,通常为0.

以下是client_flag的取值:

  1. can_handle_expired_passwords客户机可以处理过期的密码
  2. client_compress使用压缩在客户端/服务器协议。
  3. client_found_rows返回发现(匹配)的行数,而不是改变的行数。
  4. client_ignore_sigpipe阻止客户端库安装一个SIGPIPE信号处理程序。这可以用来避免冲突的处理程序已经安装的应用程序。
  5. client_ignore_space允许空间。使所有的函数名称保留字。
  6. client_interactive允许interactive_timeout秒的静止(而不是wait_timeout秒)在关闭连接之前。客户的会话wait_timeout变量设置为会话interactive_timeout变量的值。
  7. client_local_files启用数据加载本地处理。
  8. client_multi_results告诉服务器,客户端可以处理多个结果集由多个语句执行或存储过程。这个标志是自动启用CLIENT_MULTI_STATEMENTS是否启用。有关更多信息,请参见此表后注意这个标志。
  9. client_multi_statements告诉服务器,客户端可以发送多个语句在一个字符串(隔开;字符)。如果没有设置这个标志,多个语句执行是禁用的。有关更多信息,请参见此表后注意这个标志。
  10. client_no_schema不允许db_name.tbl_name。col_name语法。这是对于ODBC。它使解析器生成一个错误如果你使用语法,这是用于捕获错误在某些ODBC程序。
  11. client_odbc未使用。
  12. client_ssl(使用SSL加密的协议)。不设置这个选项在一个应用程序,它被设置在内部在客户端库。相反,使用mysql_ssl_set()调用之前mysql_real_connect()。
  13. client_remember_options记住选项指定调用mysql_options()。没有这个选项,如果mysql_real_connect()失败,你必须重复mysql_options()调用之前再次尝试连接。采用这一选项,mysql_options()调用不需要重复。

const char *mysql_error(MYSQL *mysql)

输出错误信息

 

int mysql_query(MYSQL *mysql, const char *stmt_str)

用于执行sql语句,第二个参数就是sql语句,语句中不能以";"结尾,如果是多条语句用分号隔开.

返回值:

  成功:0

  错误返回错误码

  可以使用mysql_error()函数查看错误详情

MYSQL_RES *mysql_use_result(MYSQL *mysql)

返回查询结果

 

MYSQL_ROW mysql_fetch_row(MYSQL_RES *result)

读取结果集中的下一行数据,返回为NULL时表示所有的数据经读取完了

 

unsigned int mysql_num_fields(MYSQL_RES *result)

返回结果集的行数

 

void mysql_close(MYSQL *mysql)

关闭连接,释放空间

 

void mysql_free_result(MYSQL_RES *result)

释放结果集的空间

更多的函数可以查看官方文档,写的非常的详细

 

简单的代码

/**我觉得这个代码够简单了,所以就不写注释了*/
#include <mysql.h>
#include <stdio.h>
#include <stdlib.h>

int main(int argc,char *argv[]){
    MYSQL *conn = NULL;
    MYSQL_RES *res = NULL;
    MYSQL_ROW row = NULL;

    char server_addr[]  = "localhost";
    char user[] = "root";
    char password[] = "123";
    char database[] = "test";

    conn = mysql_init(NULL);
    mysql_real_connect(conn,server_addr,user,password,database,0,NULL,0);
    if(conn == NULL){
        perror(mysql_error(conn));
        exit(1);
    }

    if(mysql_query(conn,"show tables")){
        perror(mysql_error(conn));
        exit(1);
    }

    res = mysql_use_result(conn);
    while( ( row = mysql_fetch_row(res) ) != NULL ){    
        printf("%s\n",row[0]);
    }

    mysql_free_result(res);
    mysql_close(conn);

    return 0;
}

 

mysql编程

标签:

人气教程排行