zoukankan      html  css  js  c++  java
  • mysql 数据库接口

    一般步骤是:

    1.调用mysql_init()初始化MYSQL结构,许多的函数执行需要这个结构体。

    2.调用mysql_real_connect()连接数据库,参数中涉及到数据库名,数据库登录名,数据库密码等等。

    3.调用mysql_real_query()执行一条Select SQL语句,通过mysql_store_result()的返回值获得Select的结果,返回的结果就是一个MYSQL_RES结构的指针。

    4.调用mysql_fetch_row()获得一条记录,函数的返回值是MYSQL_ROW对象,这是一个char二维数组。获取一条记录以后,mysql_fetch_row会将游标自动向下移动一条记录。

    5.调用mysql_free_result()释放结果资源,调用mysql_close关闭连接。

    1.mysql_sqlstate
    const char *mysql_sqlstate(MYSQL *mysql)

    描述
    返回由Null终结的字符串,该字符串包含关于上次错误的SQLSTATE错误代码。错误代码包含5个字符。'00000'表示无错误。其值由ANSI SQL和ODBC指定。

    注意:并非所有的MySQL错误均会被映射到SQLSTATE错误代码。值'HY000'(一般错误)用于未映射的错误。

    返回值
    包含SQLSTATE错误码的、由Null终结的字符串。

    2..mysql_real_connect 连接远程数据库

    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, // 如果unix_socket不是NULL,该字符串描述了应使用的套接字或命名管道。注意,“host”参数决定了连接的类型。
      unsigned long client_flag // client_flag的值通常为0,但是,也能将其设置为下述标志的组合,以允许特定功能

    );

    标志名称

    标志描述

    CLIENT_COMPRESS

    使用压缩协议。

    CLIENT_FOUND_ROWS

    返回发现的行数(匹配的),而不是受影响的行数。

    CLIENT_IGNORE_SPACE

    允许在函数名后使用空格。使所有的函数名成为保留字。

    CLIENT_INTERACTIVE

    关闭连接之前,允许interactive_timeout(取代了wait_timeout)秒的不活动时间。客户端的会话wait_timeout变量被设为会话interactive_timeout变量的值。

    CLIENT_LOCAL_FILES

    允许LOAD DATA LOCAL处理功能。

    CLIENT_MULTI_STATEMENTS

    通知服务器,客户端可能在单个字符串内发送多条语句(由‘;’隔开)。如果未设置该标志,将禁止多语句执行。

    CLIENT_MULTI_RESULTS

    通知服务器,客户端能够处理来自多语句执行或存储程序的多个结果集。如果设置了CLIENT_MULTI_STATEMENTS,将自动设置它。

    CLIENT_NO_SCHEMA

    禁止db_name.tbl_name.col_name语法。它用于ODBC。如果使用了该语法,它会使分析程序生成错误,在捕获某些ODBC程序中的缺陷时,它很有用。

    CLIENT_ODBC

    客户端是ODBC客户端。它将mysqld变得更为ODBC友好。

    CLIENT_SSL

    使用SSL(加密协议)。该选项不应由应用程序设置,它是在客户端库内部设置的。

    如:

    if ( ! mysql_real_connect
    (
    m_pMySql,
    m_pszIPAddress, // localhost
    m_pszUserName,  // root
    m_pszUserPassword, // 1234
    m_pszDatabaseName,  // mytestdb
    0,
    NULL,
    CLIENT_MULTI_STATEMENTS | CLIENT_MULTI_RESULTS/*CLIENT_LOCAL_FILES*/)
    )

    3.mysql_set_character_set 为当前连接设置默认的字符集

    该函数用于为当前连接设置默认的字符集。字符串csname指定了1个有效的字符集名称。连接校对成为字符集的默认校对。该函数的工作方式与SET NAMES语句类似,但它还能设置mysql->charset的值,从而影响了由mysql_real_escape_string()设置的字符集。该函数是在MySQL 5.0.7中增加的。

    返回:

    该函数0表示成功,非0值表示出现错误。

    如: mysql_set_character_set( m_pMySql, "utf8");

    4.mysql_ping 

    int mysql_ping(MYSQL *mysql)

    Ping 一个服务器连接,如果没有连接则重新连接。
    如果存在连接,则返回 true。如果失败,则返回 false。

    5.mysql_query 发送一条 MySQL 查询

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

    如果没有打开的连接,本函数会尝试无参数调用 mysql_connect() 函数来建立一个连接并使用之。

    返回值:

    成功返回TRUE,失败返回FALSE。 // random中 if(mysql_query(... , ...) ){出错处理;} // 是否搞反了???

    6.mysql_store_result 

    MYSQL_RES *mysql_store_result(MYSQL *mysql)

    在使用 mysql_query() 进行一次查询后,一般要用这两个函数之一来把结果存到一个 MYSQL_RES * 变量中。 

    mysql_use_result 与 mysql_store_result 的区别:

    mysql_use_result() 的结果必须“一次性用完”,也就是说用它得到一个 result 后,必须反复用 mysql_fetch_row() 读取其结果直至该函数返回 null 为止,否则如果你再次进行 mysql 查询,会得到 “Commands out of sync; you can't run this command now” 的错误。

    mysql_store_result() 得到 result 是存下来的,你无需把全部行结果读完,就可以进行另外的查询。比如你进行一个查询,得到一系列记录,再根据这些结果,用一个循环再进行数据库查询,就只能用 mysql_store_result() 。 

    返回值
    具有多个结果的MYSQL_RES结果集合。如果出现错误,返回NULL。

    如:

    MYSQL_RES *_Result;
    MYSQL_ROW _Row;

    _Result = mysql_store_result(m_pMySql);
    _iFields = mysql_num_fields(_Result);

    while ( ( _Row = mysql_fetch_row( _Result ) ) )
    {

      ...

    }

    额外:关于mysql_store_result的使用: http://my.oschina.net/moooofly/blog/186456

    7.mysql_num_fields 获取结果中列的个数

    如果失败,则返回 false。

    _iFields = mysql_num_fields(_Result); // MYSQL_RES *_Result; int _iFields;

    8.mysql_fetch_row

    MYSQL_ROW mysql_fetch_row(MYSQL_RES *result)

    获得一条记录,函数的返回值是MYSQL_ROW对象,这是一个char二维数组。获取一条记录以后,mysql_fetch_row会将游标自动向下移动一条记录。

    当在mysql_store_result()之后使用时,如果没有更多的行可检索时,mysql_fetch_row()返回NULL。

    9.mysql_free_result

    释放结果内存

    如果成功,则返回 true,如果失败,则返回 false。

    10.mysql_error

    函数返回上一个 MySQL 操作产生的文本错误信息。

    本函数返回上一个 MySQL 函数的错误文本,如果没有出错则返回 ''(空字符串)。

    11.mysql_close

    当你从数据库获取了数据后,还要对这些数据进行复杂运算加工时(肯定很耗时间)
    这时就应关闭数据库连接,以便其他人使用

    或者 mysql_query查询完,就调用mysql_close是个很好的习惯。

  • 相关阅读:
    Table of CGI variable names
    Mashup 介绍
    jQuery to Style Design Elements: 20 Impressive Plugins
    利用 Domino V8 新特性开发 Mashup 应用(转载)
    css 居中问题
    【仿某公司前台】 asp安全查询系统
    奇怪了,为什么“语句未结束”
    背景图片不重复 firefox
    关于div层的间隙, 还有img与div的间隙
    js中的return
  • 原文地址:https://www.cnblogs.com/sylar-liang/p/4323043.html
Copyright © 2011-2022 走看看