zoukankan      html  css  js  c++  java
  • VC连接mysql

    #include <windows.h>  
    #include <stdio.h>  
    #include <stdlib.h>  
    #include <string.h>  
    #include <mysql.h>   
    #include <iostream>
    #include<iomanip>  
    #pragma comment(lib,"libmysql.lib")//连接MysQL需要的库  
    using namespace std;  
    int main()  
    {  
        const char user[] = "root";         //username  
        const char pswd[] = "016457t";    //password  
        const char host[] = "localhost";    //or"127.0.0.1"  
        const char table[] ="yggl";       //database  
        unsigned int port = 3306;           //server port          
        MYSQL myCont;  //句柄
        MYSQL_RES *result;//理解为一个二维表类似 android中cursor  
        MYSQL_ROW sql_row; //以行为单位 
        MYSQL_FIELD *fd;  //域:以列为单位
        char column[32][32];  
        int res;  
        mysql_init(&myCont);  //初始化mysql句柄.如果mysql为NULL, 则分配一个.
        if(mysql_real_connect(&myCont,host,user,pswd,table,port,NULL,0))  //连接数据库
        {  
            cout<<"connect succeed!"<<endl;  
            mysql_query(&myCont, "SET NAMES GBK"); //设置编码格式,否则在cmd下无法显示中文  
            res=mysql_query(&myCont,"select * from employees");//勉强理解为查询失败返回true 
            if(!res)  //非res
            {  
                result=mysql_store_result(&myCont);//保存查询到的数据到二维表result  
                if(result)//判断二维表是否为空  
                {  
                    int i,j;  
                    cout<<"number of result: "<<(unsigned long)mysql_num_rows(result)<<endl; //获取表中行数 
                    for(i=0;fd=mysql_fetch_field(result);i++)//光标以列为单位;用来从查询结果中取得字段的信息。
    					//如果没有指定字段偏移量,则提取下一个尚未被 mysql_fetch_field() 取得的字段
                    {  
                        strcpy(column[i],fd->name); //fd->name 很特殊 
                    }  
                    j=mysql_num_fields(result);  //表的字段数或宽度
                    for(i=0;i<j;i++)  
                    {  
                        cout<<std::left<<setw(10)<<column[i];
                    }  
                    cout<<'
    ';  
                    while(sql_row=mysql_fetch_row(result))//光标以行为单位;获取具体的数据 sql_row为一个一维数组
    					//mysql_fetch_row与mysql_fetch_field类似即如果没有指定行的偏移量,则提取
    					//下一个尚未被mysql_fetch_row取得的行
                    {  
                        for(i=0;i<j;i++)  
                        {  
    						cout<<std::left<<setw(10)<<sql_row[i];
                        }   
    					cout<<'
    ';
                    }  
                }  
            }  
            else  
            {  
                cout<<"query sql failed!"<<endl;  
            }  
        }  
        else  
        {  
            cout<<"connect failed!"<<endl;  
        }  
        if(result!=NULL) mysql_free_result(result);//释放二维表result中的结果资源  
        mysql_close(&myCont);//断开与MySQL的连接  
        return 0;  
    } 
    

  • 相关阅读:
    2020-08-20
    2020-08-19
    2020-08-14
    2020-08-13
    使用numpy实现机器学习模型
    分治法学习
    2020-08-09
    2020-08-02
    四月是你的谎言下载
    新博客
  • 原文地址:https://www.cnblogs.com/zztong/p/6695292.html
Copyright © 2011-2022 走看看