zoukankan      html  css  js  c++  java
  • 执行SQL语句---SELECT

    1、通常从MySQL数据库中检索数据有4个步骤:

    (1)发出查询: 用mysql_query发出查询。

    (2)检索数据: 用mysql_store_result/mysql_use_result

    (3)处理数据:用mysql_fetch_row, mysql_fetch_field

    (4)整理所需要的数据:用mysql_free_result允许MySQL进行必要的整理工作。

    2、例子:结构化的数据库查询输出

    /*
     * MysqlQuery2.c
     *
     *  Created on: Sep 8, 2013
     *      Author: root
     */
    #include <stdlib.h>
    #include <stdio.h>
    #include <mysql/mysql.h>
    MYSQL my_connection;
    MYSQL_RES * res_ptr;
    MYSQL_ROW sqlrow;
    void display_header();
    void display_row(MYSQL * ptr);
    
    int main(){
        int res;
        int first_row = 1;
        mysql_init(&my_connection);
        if(mysql_real_connect(&my_connection, "localhost", "root", "ROOT123456", "icmp", 0, NULL, 0)){
            printf("Connection success.
    ");
            res = mysql_query(&my_connection, "select childno, fname, age from children where age > 5");
            if(res){
                printf("Select error:%s 
    ", mysql_error(&my_connection));
                return -2;
            }else{
                res_ptr = mysql_use_result(&my_connection);
                if(res_ptr){
                    display_header();
                    while((sqlrow = mysql_fetch_row(res_ptr))){
                        if(first_row){
                            display_header();
                            first_row = 0;
                        }
                        display_row(&my_connection);
                    }
                    if(mysql_errno(&my_connection)){
                        fprintf(stderr, "Retrieve error:%s
    ", mysql_error(&my_connection));
                        return -3;
                    }
                }
                mysql_free_result(res_ptr);
            }
            mysql_close(&my_connection);
            printf("Connection closed.
    ");
        }else{
            fprintf(stderr, "Connection failed.
    ");
            if(mysql_errno(&my_connection)){
                fprintf(stderr, "Connection error %d %s
    ", mysql_errno(&my_connection), mysql_error(&my_connection));
                return -1;
            }
        }
        return 0;
    }
    
    void display_header(){
        MYSQL_FIELD * field_ptr;
        printf("Column details:
    ");
        while((field_ptr = mysql_fetch_field(res_ptr)) != NULL){
            printf("	Name: %s
    ", field_ptr->name);
            printf("	Type:");
            if(IS_NUM(field_ptr->type)){
                printf("Numeric field
    ");
            }else{
                switch(field_ptr->type){
                case FIELD_TYPE_VAR_STRING:
                    printf("VARCHAR
    ");break;
                case FIELD_TYPE_LONG:
                    printf("LONG
    ");break;
                default:
                    printf("Type is %d, check in mysql_com.h
    ", field_ptr->type);
                }
            }
    
            printf("	Max width %d
    ", field_ptr->length);
            if(field_ptr->flags & AUTO_INCREMENT_FLAG){
                printf("	 Auto increments
    ");
            }
            printf("
    ");
        }
    }
    
    void display_row(MYSQL * ptr){
        unsigned int field_count;
        field_count = 0;
        while(field_count < mysql_field_count(ptr)){
            printf("%s ", sqlrow[field_count]);
            field_count++;
        }
        printf("
    ");
    }

    运行结果:

    Connection success.
    Column details:
        Name: childno
        Type:Numeric field
        Max width 11
         Auto increments

        Name: fname
        Type:VARCHAR
        Max width 30

        Name: age
        Type:Numeric field
        Max width 11

    Column details:
    1 wangle 28
    2 xuyehui 29
    Connection closed.

  • 相关阅读:
    HelperProvider提供控件的弹出或联机帮助
    弹出层之3:JQuery.tipswindow
    使用重绘项美化WinForm中的控件
    BackgroundWorker在单独的线程上执行操作
    NHibernate学习笔记之一,Hello world!
    FileSystemWatcher 监视指定目录中的变更
    JQuery扩展插件Validate—6radio、checkbox、select的验证
    弹出层之1:JQuery.Boxy (一)
    大文件复制时块的取值问题
    JQuery扩展插件Validate—4设置错误提示的样式
  • 原文地址:https://www.cnblogs.com/wangle1001986/p/3308345.html
Copyright © 2011-2022 走看看