zoukankan      html  css  js  c++  java
  • MySql与VS2010连接

      安装MySql后一直想与VS连接,出现了几个问题,在此记录下方便日后看看。

      连接过程:(看个人电脑的安装路径)

    1、项目->属性->配置属性->VC++目录->包含目录

    添加   C:\Program Files\MySQL\MySQL Server 5.5\include;

    2、项目->属性->配置属性->VC++目录->引用目录

    添加  C:\Program Files\MySQL\MySQL Server 5.5\lib;

    3、项目->属性->配置属性->VC++目录->库目录

    添加  C:\Program Files\MySQL\MySQL Server 5.5\lib;

    4、项目->属性->链接器->输入->附加依赖项中添加libmysql.lib

      一些错误及其解决方案:

    1、编译错误,LINK : fatal error LNK1104: 无法打开文件“libmysql.lib”

    解答:请看上面得第4条,如果还是不行,..\Program Files\Microsoft Visual Studio .NET 2003\Vc7\lib
    把缺少的*.lib文件全COPY放到下面 

    2、编译正常,运行报错: 应用程序无法正常启动(0xc00007b)。

    解答:VS和MySql都是64位的,不应该用win32.

    项目->属性->配置管理器->活动解决方案平台,下拉选新建,出现一个新的对话框,选择 x64。

     3、编译正常,运行报错:无法启动此程序,因为计算机中丢失libmysql.dll

    将libmysql.dll拷贝入项目的Debug中。

    范例代码:(借用别人的。。。)

    此代码必须先自己在mysql中建立一个数据库,在此推荐一个MySql的小软件---Navicat for MySql。对输入命令不熟的同学可以用这个图形界面O(∩_∩)O~

    #include <winsock.h>
    #include
    <iostream> #include <string> #include <mysql.h> using namespace std; #pragma comment(lib, "ws2_32.lib") #pragma comment(lib, "libmysql.lib") //单步执行,不想单步执行就注释掉 //#define STEPBYSTEP int main() { cout<<"****************************************"<<endl; #ifdef STEPBYSTEP system("pause"); #endif //必备的一个数据结构 MYSQL mydata; //初始化数据库 if(0==mysql_library_init(0,NULL,NULL)) { cout<<"mysql_library_init() succeed"<<endl; } else { cout<<"mysql_library_init() failed"<<endl; return -1; } #ifdef STEPBYSTEP system("pause"); #endif //初始化数据结构 if(NULL!=mysql_init(&mydata)) { cout<<"mysql_init() succeed"<<endl; } else { cout<<"mysql_init() failed"<<endl; return -1; } #ifdef STEPBYSTEP system("pause"); #endif //在连接数据库之前,设置额外的连接选项 //可以设置的选项很多,这里设置字符集,否则无法处理中文 if(0==mysql_options(&mydata,MYSQL_SET_CHARSET_NAME,"gbk")) { cout<<"mysql_options() succeed"<<endl; } else { cout<<"mysql_options() failed"<<endl; return -1; } #ifdef STEPBYSTEP system("pause"); #endif //连接数据库 if(NULL!=mysql_real_connect(&mydata,"","root","******","jiang",3306,NULL,0))
    //这里的地址,用户名,密码,端口可以根据自己本地的情况更改,不会用的参看百度百科:mysql_real_connect的使用。这里的数据库名称为 “jiang”,必须之前先建立好数据库 { cout<<"mysql_real_connect() succeed"<<endl; } else { cout<<"mysql_real_connect() failed"<<endl; return -1; } #ifdef STEPBYSTEP system("pause"); #endif //sql字符串 string sqlstr; //创建一个表 sqlstr ="CREATE TABLE IF NOT EXISTS user_info"; sqlstr+="("; sqlstr+="user_id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY COMMENT 'Unique User ID',"; sqlstr+="user_name VARCHAR(100) CHARACTER SET gb2312 COLLATE gb2312_chinese_ci NULL COMMENT 'Name Of User',"; sqlstr+="user_second_sum INT UNSIGNED NOT NULL DEFAULT 0 COMMENT 'The Summation Of Using Time'"; sqlstr+=");"; if(0==mysql_query(&mydata,sqlstr.c_str())) { cout<<"mysql_query() create table succeed"<<endl; } else { cout<<"mysql_query() create table failed"<<endl; mysql_close(&mydata); return -1; } #ifdef STEPBYSTEP system("pause"); #endif //向表中插入数据 sqlstr ="INSERT INTO user_info(user_name) VALUES('公司名称'),('一级部门'),('二级部门'),('开发小组'),('姓名');"; if(0==mysql_query(&mydata,sqlstr.c_str())) { cout<<"mysql_query() insert data succeed"<<endl; } else { cout<<"mysql_query() insert data failed"<<endl; mysql_close(&mydata); return -1; } #ifdef STEPBYSTEP system("pause"); #endif //显示刚才插入的数据 sqlstr="SELECT user_id,user_name,user_second_sum FROM user_info"; MYSQL_RES *result=NULL; if(0==mysql_query(&mydata,sqlstr.c_str())) { cout<<"mysql_query() select data succeed"<<endl; //一次性取得数据集 result=mysql_store_result(&mydata); //取得并打印行数 int rowcount=mysql_num_rows(result); cout<<"row count: "<<rowcount<<endl; //取得并打印各字段的名称 unsigned int fieldcount=mysql_num_fields(result); MYSQL_FIELD *field=NULL; for(unsigned int i=0;i<fieldcount;i++) { field=mysql_fetch_field_direct(result,i); cout<<field->name<<"\t\t"; } cout<<endl; //打印各行 MYSQL_ROW row=NULL; row=mysql_fetch_row(result); while(NULL!=row) { for(int i=0; i<fieldcount;i++) { cout<<row[i]<<"\t\t"; } cout<<endl; row=mysql_fetch_row(result); } } else { cout<<"mysql_query() select data failed"<<endl; mysql_close(&mydata); return -1; } #ifdef STEPBYSTEP system("pause"); #endif /* //删除刚才建的表,我给注释掉了 sqlstr="DROP TABLE user_info"; if(0==mysql_query(&mydata,sqlstr.c_str())) { cout<<"mysql_query() drop table succeed"<<endl; } else { cout<<"mysql_query() drop table failed"<<endl; mysql_close(&mydata) ; return -1; } mysql_free_result(result); mysql_close(&mydata); mysql_server_end(); */ system("pause"); return 0; }

        

  • 相关阅读:
    古谚、评论与论断、名篇与名言
    重读《西游记》
    重读《西游记》
    命名之法 —— 时间、季节、地点
    命名之法 —— 时间、季节、地点
    文言的理解 —— 古时的称谓、别称、别名
    文言的理解 —— 古时的称谓、别称、别名
    Oracle GoldenGate for Oracle 11g to PostgreSQL 9.2.4 Configuration
    瀑布 敏捷 文档
    POJ 1325 ZOJ 1364 最小覆盖点集
  • 原文地址:https://www.cnblogs.com/tuzijs/p/3402746.html
Copyright © 2011-2022 走看看