C語言調用數據庫

#include <stdio.h>
#include <string.h>
#include <mysql.h>
int main()
{
//1、連接服務器
    MYSQL mysql;
    mysql_init(&mysql);
    if (!mysql_real_connect(&mysql,"128.0.47.135","dengjun123","abc123","school",0,NULL,0))
    {
        fprintf(stderr, "Failed to connect to database: Error: %s\n",
                mysql_error(&mysql));
    }
    mysql_query(&mysql, "set names utf8"); //設置編碼
//2、CRUD操作(增刪改)
    char sql[300] = "insert into student (sno, name) values (1008, '馬雲')";
    if(mysql_query(&mysql, sql))
    {
        fprintf(stderr, "Failed to connect to database: Error: %s\n",
                mysql_error(&mysql));
    }
    else
    {
        printf("添加學生信息成功!\n");
    }
    //查
    strcpy(sql, "select s.sno, s.name, sex, phone, c.name, grade from student s, course c, score sc where s.sno=sc.sno and c.cno=sc.cno and c.name='C語言程序設計' and grade>60 order by grade desc, sex desc limit 3");
    if(mysql_query(&mysql, sql))//查詢
    {
        fprintf(stderr, "Failed to select: Error: %s\n",
                mysql_error(&mysql));
    }
    else
    {
        MYSQL_RES* res = NULL;//從堆區申請空間保存一行查詢內容

        res = mysql_store_result(&mysql);

        if(res != NULL)
        {
            MYSQL_ROW row;
            unsigned int num_fields;//一行由多個字段組成
            unsigned int i;
            num_fields = mysql_num_fields(res);
            while ((row = mysql_fetch_row(res)))//依次輸出每行
            {
                for(i = 0; i < num_fields; i++)
                {
                    printf("%s ", row[i]);//依次輸出每行的每個字段(列)
                }
                printf("\n");
            }
            mysql_free_result(res);//釋放堆區空間
        }
        else
        {
            //失敗
            printf("show failed\n");
        }
    }
//3、關閉
    mysql_close(&mysql);
    return 0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章