Mysql C API関数の詳細

21892 ワード

  • mysql_init() MYSQL *mysql_init(MYSQL *mysql)

  • 説明
           mysql_real_connect()    MYSQL  。  mysql NULL  ,      、   、      。  ,      ,        。  mysql_init()       ,   mysql_close()      。      。
    

    戻り値
        MYSQL*  。              ,  NULL。
    

    エラー
             ,  NULL。 
    
  • mysql_errno() unsigned int mysql_Errno(MYSQL*mysql)記述:
       mysql     ,mysql_errno()       API       ,              。“0”          。 MySQL errmsg.h    ,            。   B:        ,        。
    
      ,    ,    , mysql_fetch_row() ,    mysql_errno()。
    
         ,    ,                 mysql_errno()。
    
    戻り値
        ,    mysql_xxx()       。“0”       。
    
  • mysql_error() const char *mysql_error(MYSQL *mysql)

  • 説明
       mysql     ,          API  ,mysql_error()         、 Null      。        ,mysql_error()            ,           。
    
         ,    ,                 mysql_error()。
    
        mysql_errno()   ,          :
    
    if(mysql_errno(&mysql))
    {
        // an error occurred
    }
    
    if(mysql_error(&mysql)[0] != '\0')
    {
        // an error occurred
    }
          MySQL    ,              。  ,              ,   5.10.2 ,“        ”。
    

    戻り値
           、 Null      。       ,      。
    

    エラー
     。 
    
  • mysql_real_escape_string() unsigned long mysql_real_escape_string(MYSQL*mysql,char*to,const char*from,unsigned long length)mysqlは、mysqlが有効なオープン接続である必要があることに注意してください.必要なのは、エスケープ機能がサーバで使用される文字セットに依存するためです.

  • 説明:
             SQL        SQL   。   9.1.1 ,“   ”。
    
              , “from”          SQL   。     “to” ,   1    NULL  。      NUL (ASCII 0)、‘
    ’、‘\r’、‘\’、‘'’、‘"’、 Control-Z( 9.1 ,“ ”)。( ,MySQL , 。 , )。 “from” “long”。 “to” length*2+1 。 , 2 , Null 。 mysql_real_escape_string() ,“to” Null 。 , Null 。 , mysql_set_character_set() , SET NAMES ( SET CHARACTER SET) 。mysql_set_character_set() SET NAMES, mysql_real_escape_string() , SET NAMES 。

    例:
    char query[1000],*end;
    
    end = strmov(query,"INSERT INTO test_table values(");
    *end++ = '\'';
    end += mysql_real_escape_string(&mysql, end,"What's this",11);
    *end++ = '\'';
    *end++ = ',';
    *end++ = '\'';
    end += mysql_real_escape_string(&mysql, end,"binary data: \0\r
    "
    ,16);
    *end++ = '\''; *end++ = ')'; if (mysql_real_query(&mysql,query,(unsigned int) (end - query))) { fprintf(stderr, "Failed to insert row, Error: %s
    "
    , mysql_error(&mysql));
    }
           strmov()     mysqlclient  ,     strcpy()  ,       1      Null   。
    

    戻り値
      “to”      ,      Null  。
    
  • my_ulonglong mysql_affected_rows(MYSQL *mysql)

  • 説明
        UPDATE     ,  DELETE     ,   INSERT       。  UPDATE、DELETE INSERT  ,  mysql_query()     。  SELECT  ,mysql_affected_rows()      mysql_num_rows()  。
    

    戻り値
      0              。“0”  UPDATE       ,       WHERE    ,      。“-1”        ,  ,  SELECT  ,   mysql_store_result()     mysql_affected_rows()。  mysql_affected_rows()      ,        “(my_ulonglong)-1”    “(my_ulonglong)~0”,     “-1”。
    

    エラー

    例:
    mysql_query(&mysql,"UPDATE products SET cost=cost*1.25 WHERE group=10");
    printf("%ld products updated",(long) mysql_affected_rows(&mysql));
          mysqld      CLIENT_FOUND_ROWS,  UPDATE  ,mysql_affected_rows()   WHERE       。
    
      ,  REPLACE   ,         ,mysql_affected_rows()  2。    ,     ,          1 。
    
        “INSERT ... ON DUPLICATE KEY UPDATE”    ,           ,mysql_affected_rows()  1,          ,  2
    

    - mysql_character_set_name() const char *mysql_character_set_name(MYSQL *mysql)
    説明

    戻り値

    エラー
     。 
    
  • mysql_set_character_set() int mysql_set_character_set(MYSQL *mysql, char *csname)

  • 説明
                      。   csname   1         。              。         SET NAMES    ,      mysql->charset  ,      mysql_real_escape_string()      。
    
         MySQL 5.0.7    。
    

    戻り値
    0    , 0       。
    

    例:
    MYSQL mysql;
    
    mysql_init(&mysql);
    if (!mysql_real_connect(&mysql,"host","user","passwd","database",0,NULL,0))
    {
        fprintf(stderr, "Failed to connect to database: Error: %s
    "
    , mysql_error(&mysql))
    ; } if (!mysql_set_charset_name(&mysql, "utf8")) { printf("New client character set: %s
    "
    , mysql_character_set_name(&mysql))
    ; }
  • mysql_close() void mysql_close(MYSQL *mysql)

  • 説明
             。      mysql_init() mysql_connect()     ,mysql_close()       mysql       。
    
       
    
     。
    
      
    
     。 
    
  • mysql_select_db() int mysql_select_db(MYSQL *mysql, const char *db)

  • 説明
      db         mysql            (     )。      ,                           。
    
                      ,  mysql_select_db()   。
    

    戻り値
    0    , 0       。
    

    エラー
    ·         CR_COMMANDS_OUT_OF_SYNC
    
                。
    
    ·         CR_SERVER_GONE_ERROR
    
    MySQL      。
    
    ·         CR_SERVER_LOST
    
          ,         。
    
    ·         CR_UNKNOWN_ERROR
    
          。 
    
  • mysql_real_query() int mysql_real_query(MYSQL *mysql, const char *query, unsigned long length)

  • 説明
       “query”   SQL  ,          “long”。     ,       1 SQL  ,             (‘;’) “\g”。         ,                。   25.2.9 ,“      C API  ”。
    
                ,    mysql_real_query()   mysql_query(),    ,          ‘\0’  。  ,mysql_real_query() mysql_query() ,                strlen()。
    
                    ,   mysql_field_count()    25.2.3.22 ,“mysql_field_count()”。
    

    戻り値
          ,  0。      ,   0 。
    

    エラー
    ·         CR_COMMANDS_OUT_OF_SYNC
    

    不適切な順序で命令を実行した.
    · CR_SERVER_GONE_ERROR
    MySQL      。
    
    ·         CR_SERVER_LOST
    
          ,         。
    
    ·         CR_UNKNOWN_ERROR
    
          。 
    

    - mysql_fetch_field() MYSQL_FIELD *mysql_fetch_field(MYSQL_RES *result)
    説明
        MYSQL_FIELD        。       ,               。      ,mysql_fetch_field()  NULL。
    
          SELECT   ,   mysql_fetch_field(),      1      。  mysql_field_seek()    mysql_fetch_field()     。
    
         mysql_query()      SELECT,    mysql_store_result(),     mysql_fetch_field()   BLOB     ,MySQL      Blob  (8KB)。     8KB   MySQL   BLOB     。            。        ,field->max_length                 。
    

    戻り値
        MYSQL_FIELD  。        ,  NULL。
    

    エラー

    例:
    MYSQL_FIELD *field;
    
    while((field = mysql_fetch_field(result)))
    {
        printf("field name %s
    "
    , field->name); }
  • mysql_store_result() MYSQL_RES *mysql_store_result(MYSQL *mysql)

  • 説明
                  (SELECT、SHOW、DESCRIBE、EXPLAIN、CHECK TABLE ),    mysql_store_result() mysql_use_result() 。
    
          ,     mysql_store_result() mysql_use_result(),              mysql_store_result(),               。    mysql_store_result()    0,            (     )。
    
                    ,   mysql_field_count()    。   25.2.3.22 ,“mysql_field_count()”。
    
    mysql_store_result()              ,  1 MYSQL_RES  ,          。
    
              ,mysql_store_result()   Null  (  ,     INSERT  )。
    
             ,mysql_store_result()    Null  。    mysql_error()         ,mysql_errno()     0 , mysql_field_count()    0,           。
    
          ,        。(                  )。
    
         mysql_store_result()      Null     ,   mysql_num_rows()          。
    
        mysql_fetch_row()         ,   mysql_row_seek() mysql_row_tell()                。
    
                ,    mysql_free_result()。
    
       25.2.13.1 ,“    mysql_query()     ,mysql_store_result()     NULL”.
    

    戻り値
           MYSQL_RES    。      ,  NULL。
    

    エラー
        ,mysql_store_result()   mysql_error() mysql_errno()。
    
    ·         CR_COMMANDS_OUT_OF_SYNC
    
                。
    
    ·         CR_OUT_OF_MEMORY
    
        。
    
    ·         CR_SERVER_GONE_ERROR
    
    MySQL      。
    
    ·         CR_SERVER_LOST
    
          ,         。
    
    ·         CR_UNKNOWN_ERROR
    
          。 
    
  • mysql_fetch_row() MYSQL_ROW mysql_fetch_row(MYSQL_RES *result)

  • 説明
             。 mysql_store_result()     ,         ,mysql_fetch_row()  NULL。 mysql_use_result()     ,               ,mysql_fetch_row()  NULL。
    
           mysql_num_fields(result)  。         mysql_fetch_row()    ,   row[0] row[mysql_num_fields(result)-1],        。   NULL  NULL    。
    
          mysql_fetch_lengths()           。         NULL   ,   0。          ,      。     NULL,   NULL,      。
    

    戻り値
        MYSQL_ROW  。                 ,  NULL。
    

    エラー
      ,  mysql_fetch_row()       ,      。
    
    ·         CR_SERVER_LOST
    
          ,         。
    
    ·         CR_UNKNOWN_ERROR
    
          。
    

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

  • 説明
                  。         ,          ,    ,      strlen()。  ,            ,               ,    ,    Null       ,strlen()        。
    
            NULL   ,    0。              ,     mysql_fetch_row()   。
    

    戻り値
                    (       NULL  )。      ,  NULL。
    

    エラー
    mysql_fetch_lengths()           。     mysql_fetch_row()                   ,   NULL。
    

    例:
    MYSQL_ROW row;
    unsigned long *lengths;
    unsigned int num_fields;
    unsigned int i;
    
    row = mysql_fetch_row(result);
    if (row)
    {
        num_fields = mysql_num_fields(result);
        lengths = mysql_fetch_lengths(result);
        for(i = 0; i < num_fields; i++)
        {
             printf("Column %u is %lu bytes in length.
    "
    , i, lengths[i]); } }
  • mysql_num_rows() my_ulonglong mysql_num_rows(MYSQL_RES *result)

  • 説明
             。
    
    mysql_num_rows()           mysql_store_result() mysql_use_result()      。     mysql_store_result(),      mysql_num_rows()。     mysql_use_result(),mysql_num_rows()       ,               。
    

    戻り値

    エラー
     。 
    
  • mysql_fetch_fields() MYSQL_FIELD *mysql_fetch_fields(MYSQL_RES *result)

  • 説明
         ,    MYSQL_FIELD     。           1      。
    

    戻り値
             MYSQL_FIELD     。
    

    エラー

    例:
    unsigned int num_fields;
    unsigned int i;
    MYSQL_FIELD *fields;
    
    num_fields = mysql_num_fields(result);
    fields = mysql_fetch_fields(result);
    for(i = 0; i < num_fields; i++)
    {
       printf("Field %u is %s
    "
    , i, fields[i].name); }
  • mysql_free_result() void mysql_free_result(MYSQL_RES *result)

  • 説明
       mysql_store_result()、mysql_use_result()、mysql_list_dbs()          。          ,    mysql_free_result()          。
    
         ,         。
    

    戻り値

    エラー
     。 
    
  • unsigned int mysql_num_fields(MYSQL_RES *result)

  • MYSQL*パラメータを渡す代わりに、符号なし整数mysql_を使用します.field_count(MYSQL *mysql).
    説明
             。
    
      ,                          。  mysql_store_result()    mysql_use_result()  NULL,       (         )。     ,   mysql_field_count()   mysql_store_result()         。  ,              ,           SELECT  (   SELECT   )。       ,           。
    
       25.2.13.1 ,“    mysql_query()     ,mysql_store_result()     NULL”。
    

    戻り値

    エラー

    例:
    MYSQL_RES *result;
    unsigned int num_fields;
    unsigned int num_rows;
    
    if (mysql_query(&mysql,query_string))
    {
        // error
    }
    else // query succeeded, process any data returned by it
    {
        result = mysql_store_result(&mysql);
        if (result)  // there are rows
        {
            num_fields = mysql_num_fields(result);
            // retrieve rows, then call mysql_free_result(result)
        }
        else  // mysql_store_result() returned nothing; should it have?
        {
            if (mysql_errno(&mysql))
            {
               fprintf(stderr, "Error: %s
    "
    , mysql_error(&mysql)); } else if (mysql_field_count(&mysql) == 0) { // query does not return data // (it was not a SELECT) num_rows = mysql_affected_rows(&mysql); } } }
  • mysql_get_host_info() char *mysql_get_host_info(MYSQL *mysql)

  • 説明
                    ,        。
    

    戻り値

    エラー
     。 
    
  • mysql_options() int mysql_options(MYSQL *mysql, enum mysql_option option, const char *arg)

  • 説明
                ,        。               。
    
      mysql_init()  、  mysql_connect() mysql_real_connect()    mysql_options()。
    
                   。Arg       。       ,  arg       。
    

    可能なオプション値:
    オプション
    パラメトリックタイプ
    機能
    MYSQL_INIT_COMMAND
    char *
    MySQLサーバーに接続するときに実行するコマンド.再接続すると自動的に再実行されます.
    MYSQL_OPT_COMPRESS
    未使用
    圧縮クライアント/サーバプロトコルの使用
    MYSQL_OPT_CONNECT_TIMEOUT
    unsigned int *
    秒単位の接続タイムアウト.
    MYSQL_OPT_GUESS_CONNECTION
    未使用
    libmysqldにリンクされたアプリケーションでは、ライブラリが組み込みサーバまたはリモートサーバを使用するかどうかを推測できます.「推測」は、ホスト名が設定されているがローカルホストではない場合、リモート・サーバが使用されることを示します.この動作はデフォルトの動作です.MYSQL_を使用可能OPT_USE_EMBEDDED_CONNECTIONとMYSQL_OPT_USE_REMOTE_CONNECTIONで上書きします.libmysqlclientにリンクされているアプリケーションでは、このオプションは無視されます.
    MYSQL_OPT_LOCAL_INFILE
    セルへの任意のポインタ
    ポインタが指定されていない場合、またはポインタが「unsigned int!=0」を指している場合、コマンドLOAD LOCAL INFILEが許可されます.
    MYSQL_OPT_NAMED_PIPE
    未使用
    ネーミングパイプを使用してNTプラットフォーム上のMySQLサーバに接続します.
    MYSQL_OPT_PROTOCOL
    unsigned int *
    使用するプロトコルのタイプ.mysqlです.hで定義したmysql_protocol_typeの列挙値の1つです.
    MYSQL_OPT_READ_TIMEOUT
    unsigned int *
    サーバからの情報読み取りのタイムアウト(現在はWindowsプラットフォームのTCP/IP接続でのみ有効).
    MYSQL_OPT_RECONNECT
    my_bool *
    接続が失われた場合は、サーバへの自動再接続を開始または禁止します.MySQL 5.0から.3から、デフォルトでは再接続が禁止されています.これは5.0です.13の新しいオプションは、再接続動作を明示的に設定する方法を提供します.
    MYSQL_OPT_SET_CLIENT_IP
    char *
    libmysqldにリンクされたアプリケーション(認証サポート機能を備えたコンパイルされたlibmysqld)については、認証の目的で指定されたIPアドレス(文字列指定)から接続されているとみなされます.libmysqlclientにリンクされているアプリケーションでは、このオプションは無視されます.
    MYSQL_OPT_USE_EMBEDDED_CONNECTION
    未使用
    libmysqldにリンクされたアプリケーションでは、接続に対して組み込みサーバが強制的に使用されます.libmysqlclientにリンクされているアプリケーションでは、このオプションは無視されます.
    MYSQL_OPT_USE_REMOTE_CONNECTION
    未使用
    libmysqldにリンクされたアプリケーションでは、接続に対してリモートサーバが強制的に使用されます.libmysqlclientにリンクされているアプリケーションでは、このオプションは無視されます.
    MYSQL_OPT_USE_RESULT
    未使用
    このオプションは使用されません.
    MYSQL_OPT_WRITE_TIMEOUT
    unsigned int *
    書き込みサーバのタイムアウト(現在はWindowsプラットフォームのTCP/IP接続のみ有効).
    MYSQL_READ_DEFAULT_FILE
    char *
    myではなく名前付きオプションファイルからcnf読み取りオプション.
    MYSQL_READ_DEFAULT_GROUP
    char *
    myからcnfまたはMYSQLでREAD_DEFAULT_FILEで指定したファイルの名前付きグループ読み込みオプション.
    MYSQL_REPORT_DATA_TRUNCATION
    my_bool *
    MYSQL経由でBIND.Errorは、前処理文の場合、データ遮断エラーの通知を許可または禁止します(デフォルトでは禁止されています).
    MYSQL_SECURE_AUTH
    my_bool*
    パスワードのミキシング機能をサポートしていないサーバーに接続するかどうか、MySQL 4.1.1以降では、パスワードミキシング機能が使用されています.
    MYSQL_SET_CHARSET_DIR
    char*
    文字セット定義ファイルを含むディレクトリへのパス名.
    MYSQL_SET_CHARSET_NAME
    char*
    デフォルトの文字セットとして使用される文字セットの名前.
    MYSQL_SHARED_MEMORY_BASE_NAME
    char*
    サーバと通信する共有メモリオブジェクトとして名前を付けます.接続するmysqldサーバで使用するオプション「-shared-memory-base-name」と同じです.
    MYSQLを使用している場合は注意READ_DEFAULT_FILEまたはMYSQL_READ_DEFAULT_GROUPは、クライアントグループを常に読み込みます.戻り値
    成功した場合は0を返します.不明なオプションが使用されている場合は、0以外の値を返します.
    例:
    MYSQL mysql;
    
    mysql_init(&mysql);
    mysql_options(&mysql,MYSQL_OPT_COMPRESS,0);
    mysql_options(&mysql,MYSQL_READ_DEFAULT_GROUP,"odbc");
    if (!mysql_real_connect(&mysql,"host","user","passwd","database",0,NULL,0))
    {
        fprintf(stderr, "Failed to connect to database: Error: %s
    "
    , mysql_error(&mysql))
    ; }