zoukankan      html  css  js  c++  java
  • mysql & vs2013

    一 mysql 版本介绍

    在mysql的官网http://dev.mysql.com/上,mysql 大致分为两个版本,即免费的社区版(community)和 付费的商业版(commercial)。其中商业版又可以细分,详细看官网介绍http://www.mysql.com/products/

    community版下载地址:http://dev.mysql.com/downloads/mysql/

    目前出到5.7。5.7和5.6如果下载都是整套的下载,里面包括了以下两个工具及mysql utilities。我下的是5.5,里面只有server。

    下载的时候有msi和zip的下载,如果是windows系统就选择能够直接安装的msi啦。

    格外注意的是,里面有32位和64位的版本。选择则版本其实不是看你的系统是多少位的,而是看你之后建立的程序是多少位的。比如 如果要和VS中著名的win 32程序联合编程的话,就选择32位的版本。

    在community 和commercial 版本中又有很多其他的工具来辅助mysql应用,我直说我接触到的两个工具。

    一个是 mysql for visual studio ,这个是辅助VS编程的,可以在VS里可视化的显示数据库和表。

    下载地址:http://dev.mysql.com/downloads/windows/visualstudio/1.2.html

    在vs2013中的设置如下(我也不明白是mysql for VS起的作用,还是vs2013中本来就有连接的功能)

    还有一个是mysql workbench ,这个是可视化的mysql工具,须知mysql server和Microsoft SQL server 不一样,前者是命令行的形式。有了workbench,事情就好办多了。但是使用这个建立连接的时候要先下载好 mysql server,不然连接不上服务器,还建立什么数据库呢。

    下载地址:http://dev.mysql.com/downloads/workbench/

    二,mysql 与 vs2013的连接配置

    和所有外加库一样,要想在vs中使用mysql无非是配置以下几个东西。

    打开vs项目的属性,找到VC++目录选项卡:

    1 在附加目录中编辑mysql include文件夹安装的路径 ,例如“C:program files....include”

    2 在库牡蛎中编辑 lib文件的路径。

    找到 链接器-->输入-->附加依赖项里增加:libmysql.lib

    在mysql安装文件中找到 libmysql.dll文件,放到vs项目的debug(release)文件夹内,看你用的是那种调试方式了。

    如果这些都做完了还有问题,试试看在系统环境变量path中有没有mysql bin文件夹的路径,没有的话就加上去。

    三,mysql 与 VS2013联合编程

    首先要指出的官方的手册:http://dev.mysql.com/doc/

    下面给出一个可以运行的对数据库进行读写的程序并附上结果

    (里面涉及到数据库元素属性,并且是默认mysql中已有数据库表的情况,所以部分涉及mysql_query的语句看个人的数据库建立情况而定)

    #include<Windows.h> 
    #include<string> 
    #include<iostream> 
    #include<mysql.h> 
    #include<stdio.h>
    #include<io.h>
    
    int main()
    {
        //connectionparams 
        char *host = "localhost";
        char *user = "root";
        char *pass = "***";//你的mysql服务器密码 
        char *db = "***";  //使用的database数据库
        unsigned int port = 3306; //server port 
        MYSQL *sock;
        MYSQL_RES *res;
        MYSQL_FIELD * fd;
        MYSQL_ROW row;
        char szSqlText[500] = "";
        int i;
        int tcreate = 0;
        sock = mysql_init(0);// return An initialized MYSQL* handle or null when there is no enough memory
        if (sock && mysql_real_connect(sock, host, user, pass, db, 0, NULL, 0))
        {
            std::cout << "connect mysql succeed!" << std::endl;
            mysql_set_character_set(sock,"utf8"); 
        //    mysql_query(sock, "set names gb2312");
            /* character-set-server/default-character-set:服务器字符集,默认情况下所采用的。
               character-set-database:数据库字符集。
               character-set-table:数据库表字符集。
               优先级依次增加。所以一般情况下只需要设置character-set-server,
               而在创建数据库和表时不特别指定字符集,这样统一采用character-set-server字符集。*/
            //mysql_query(sock, "SET NAMES GBK"); //设置编码格式,否则在cmd下无法显示中文 
            //connectioncharacter set 
            //waitfor possibility to check system/mysql mysqlets 
            if (tcreate)
            {
                sprintf_s(szSqlText, 200, "create table id (ID varchar(10) not null primary key,cenroid float,width int(11)");  //构造SQL语句 新建一张表 
                std::cout << "Create table id!" << std::endl;
                getchar();
                tcreate = 1;
                if (mysql_query(sock, szSqlText))//执行Dsql语句,并判断是否出错 
                {
                    std::cout << "can't create table,maybe the data property is wrong :  " << mysql_error(sock) << std::endl;
                    // tcreate = 0; 
                    mysql_close(sock);
                    return FALSE;
    
                }
            }
                sprintf_s(szSqlText, 200,//向mytable这个表插入数据 注意格式 
                    "insert into id1 values('sL','69','60')");
                std::cout << "Insert data to table!" << std::endl;
                getchar();
                if (mysql_query(sock, szSqlText))
                {
                    std::cout << "Can't insert data to table" << mysql_error(sock) << std::endl;
                    getchar();
                    mysql_close(sock);
                    return FALSE;
                }
                sprintf_s(szSqlText, 200, "select* from id1");
                std::cout << "select* from id1!" << std::endl;
                getchar();
                if (mysql_query(sock, szSqlText))//进行数据检索并检查有无错误 
                {
                    mysql_close(sock);
                    return FALSE;
                }
                else
                {
                    std::cout << "mysql_store_result!" << std::endl;
                    res = mysql_store_result(sock);//取得查询结果,保存查询到的数据到res 
                    i = (int)mysql_num_rows(res);//取得有效记录数 
                    std::cout << "Query: " << szSqlText << "
    " << i << " records found:" << std::endl;
                    for (i = 0; fd = mysql_fetch_field(res); i++)//获取列名 
                        std::cout << fd->name << "	";
                    std::cout << std::endl;//输出各字段名 
                    while (row = mysql_fetch_row(res))//获取具体的数据,依次读取各条记录 
                        std::cout << row[0] << "	" << row[1] << "	" << row[2] << "	" << std::endl;
                    mysql_free_result(res); //释放结果资源 
                    getchar();
                }
    
            }
            else//连接数据库出错 
            {
                std::cout << "cannot connect to the sock sever " << mysql_error(sock) << std::endl;
                getchar();
                mysql_close(sock);
                return FALSE;
            }
            mysql_close(sock);//断开连接 
            //    system("pause");
    
            return TRUE;
        }

    有一点没对齐。

    ps:此文为作者个人理解摘抄,欢迎指正

  • 相关阅读:
    asp 向另一个页面传递数组
    TSQL Program Rule and Tips 规则与优化
    虚函数 纯虚函数 抽象类
    static (c#)
    简单游标
    抽象方法 抽象类 (abstract)
    清理电脑
    泛型学习
    继承(对象生命周期) + 覆盖[new](索引函数) + 重载[virtual/override]
    #干货向#jQuery性能优化指南
  • 原文地址:https://www.cnblogs.com/Daringoo/p/5240285.html
Copyright © 2011-2022 走看看