2016-1-8 windows 7下安装mysql及其配置和运用

绪言

最近学习了一下mysql的相关用法,以及vs2010结合mysql的使用。

遇到的问题:1、安装mysql 5.6 绿色免安装版本,出现mysql server not connect localhost 10061错误

                2、安装mysql 5.7 ,command line出现闪退和mysql server not connect localhost 10061错误根本解决

                3、vs2010配置mysql,无法连接mysql的错误

一、免安装版本启动mysql的方法

       主要是配置文件配置错误:

       1、进入mysql安装目录找到my-defaults.ini(安装或者免安装版的名称),将该名称修改为my.ini(注意.ini为该文件类型)

9db21d3b-f710-49c5-9312-7a3296816936[6]

2、打开my.ini配置文件,修改port(mysql接入端口),basedir(mysql安装目录),datadirport(mysql数据库的数据的存放目录) 。

附上我的my.ini的配置文件内容:

e46d2cef-f7f3-44db-b584-2fc851827c83[6]

3、启动mysql

第一步:打开cmd命令行,cd到安装根目录路(bin)下(例如:进入mysql安装的磁盘下,cd mysqlmysql 5.6in)

afaa4019-7ad3-4b32-a1af-bde70aac2f35[6]

第二步:然后运行命令 mysql -uroot -p(或者mysql -u root -p),若出现下面错误

967df3d3-df74-4c0e-ac48-d66acfd1c0a8[6]

一般是mysql服务没有启动,解决方法:(查看mysql服务有没有启动,可以打开控制面板-管理-服务,找到mysql的运行方式改改为自启动)

这里我采用一种更笨的方法,无论是否启动,我们先执行下一条命令:

mysqld -nt -remove(卸载mysql服务)

再执行mysqld -nt -install

再输入 mysql -uroot -p

得到如下图:

0e7aab0f-53d5-4f78-8723-11989983d3d7[6]

则说明顺利进入了mysql命令行中。

二、解决command line 闪退现象和mysql server not connect localhost 10061错误根本解决

        1、进入mysql安装目录找到my-defaults.ini(安装或者免安装版的名称),将该名称修改为my.ini(注意.ini为该文件类型),打开my.ini配置文件,修改port(mysql接入端口),basedir(mysql安装目录),datadirport(mysql数据库的数据的存放目录) 。

2、(根本解决启动mysql失败方法),附件-运行,输入regedit

ec04919d-e33d-46f1-831f-a9852dac88c9[6]

3、在如图的目录树中找到mysql项,双击进入找到ImagePath这一项,

49f2fbd0-79f2-48a3-83cc-38b18e4f7bde[6]

4、修改ImagePath中的路径(启动mysqld的路径),mysqld.exe在安装根目录下,只需要把该路径添加进去。(注意后面如有--defaults-files=d:Mysql,则将该句删掉,仅保留你的mysqld路径即可)

fe3eb682-e2d7-4f3b-ab6a-4d66688da360[6]

5、重新启动计算机,cmd中运行命令mysql -uroot -p或者mysql command line 即可运行mysql数据库。

总结:这种方法从根本上解决了启动mysql服务问题,不用每次开机繁琐的去执行mysqld -nt -remove ,mysqld -nt -install等命令。

三、Vs2010配置mysql

1、将mysql安装目录中include的路径写入vs2010项目属性配置的包含目录

将mysql安装目录中lib的路径写入vs2010项目属性配置的库目录

9686507[6]

     将libmysql.lib写入连接器-输入-附加依赖项

d67d364e-a925-4181-99b4-88ff107be635[6]

系统环境变量的配置;
打开系统环境变量,找到path,在path里添加mysql安装目录中lib文件的路径
vs2010配置mysql的完成。

四、一个可以运行的结合mysql的c++文件

#ifndef _VSPD_H

#define _VSPD_H

#include <Windows.h>

#include <string>

#include <mysql.h>

#include <iostream>

using namespace std;

class VspdCToMySQL

{

public:

//变量

MYSQL mysql; 

/*

1、构造函数和稀构函数

*/

VspdCToMySQL();

~VspdCToMySQL(); 

/*

ConnMySQL();

主要的功能:

初始化数据库

连接数据库

设置字符集

入口参数:

host :MYSQL服务器IP

port:数据库端口

Db:数据库名称

user:数据库用户

passwd:数据库用户的密码

charset:希望使用的字符集

Msg:返回的消息,包括错误消息

出口参数:

int :0表示成功;1表示失败

*/

int ConnMySQL(char *host,char * port,char * Db,char * user,char* passwd,char * charset,char * Msg);

/*

主要的功能:

查询数据

入口参数:

SQL:查询的SQL语句

Cnum:查询的列数

Msg:返回的消息,包括错误消息

出口参数:

string 准备放置返回的数据,多条记录则用0x06隔开,多个栏位用0x05隔开

如果 返回的长度= 0,责表示舞结果

*/

string SelectData(char * SQL,int Cnum ,char * Msg);

 /*

主要功能:

插入数据

入口参数

SQL:查询的SQL语句

Msg:返回的消息,包括错误消息

出口参数:

int :0表示成功;1表示失败

*/

int InsertData(char * SQL,char * Msg);

 /*

主要功能:

修改数据

 入口参数

SQL:查询的SQL语句

Msg:返回的消息,包括错误消息

出口参数:

int :0表示成功;1表示失败

*/

int UpdateData(char * SQL,char * Msg);

 /*

主要功能:

删除数据

入口参数

SQL:查询的SQL语句

Msg:返回的消息,包括错误消息

出口参数:

int :0表示成功;1表示失败

*/

int DeleteData(char * SQL,char * Msg);

 /*

主要功能:

关闭数据库连接

*/

void CloseMySQLConn();

};

#endif

#include "VspdCTOMySQL.h"

VspdCToMySQL::VspdCToMySQL()

{

}

VspdCToMySQL::~VspdCToMySQL()

{

}

//初始化数据

int VspdCToMySQL::ConnMySQL(char *host,char * port ,char * Db,char * user,char* passwd,char * charset,char * Msg)

{

if( mysql_init(&mysql) == NULL )

{

Msg = "inital mysql handle error";

return 1;

}

if (mysql_real_connect(&mysql,host,user,passwd,Db,0,NULL,0) == NULL)

{

Msg = "Failed to connect to database: Error";

return 1;

}

if(mysql_set_character_set(&mysql,charset) != 0)

{

Msg = "mysql_set_character_set Error";

return 1;

}

return 0;

}

//查询数据

string VspdCToMySQL::SelectData(char * SQL,int Cnum,char * Msg)

{

MYSQL_ROW m_row;

MYSQL_RES *m_res;

char sql[2048];

sprintf(sql,SQL);

int rnum = 0;

int cnum = 0;

char rg = 0x06;//行隔开

char cg = {0x05};//字段隔开

if(mysql_query(&mysql,sql) != 0)

{

Msg = "select ps_info Error";

return "";

}

m_res = mysql_store_result(&mysql);

if(m_res==NULL)

{

Msg = "select username Error";

return "";

}

cnum=mysql_num_fields(m_res); //获取数据库的列数

cnum=cnum>Cnum?Cnum:cnum;

cout<<"cnum:"<<cnum<<endl;

string str("");

while(m_row = mysql_fetch_row(m_res))

{

for(int i = 0;i < cnum;i++)

{

if(m_row!=NULL)

{

str += m_row[i];

str+=0x09;

}

else

{

str+="NULL";

}

}

str +=" ";

rnum++;

}

cout<<"rnum:"<<rnum<<endl;

mysql_free_result(m_res);

return str;

}

//插入数据

int VspdCToMySQL::InsertData(char * SQL,char * Msg)

{

char sql[2048];

sprintf(sql,SQL);

if(mysql_query(&mysql,sql) != 0)

{

Msg = "Insert Data Error";

return 1;

}

return 0;

}

//更新数据

int VspdCToMySQL::UpdateData(char * SQL,char * Msg)

{

char sql[2048];

sprintf(sql,SQL);

if(mysql_query(&mysql,sql) != 0)

{

Msg = "Update Data Error";

return 1;

}

return 0;

}

//删除数据

int VspdCToMySQL::DeleteData(char * SQL,char * Msg)

{

char sql[2048];

sprintf(sql,SQL);

if(mysql_query(&mysql,sql) != 0)

{

Msg = "Delete Data error";

return 1;

}

return 0;

}

//关闭数据库连接

void VspdCToMySQL::CloseMySQLConn()

{

mysql_close(&mysql);

}

#include "VspdCTOMySQL.h"

int main(int argc, char* argv[])

{

char* host="localhost";

char* user="root";

char* port ="3306";

char* passwd="";

char* dbname="image";

char* charset = "GBK";//支持中文

char* Msg = "";//消息变量

//初始化

VspdCToMySQL * vspdctomysql = new VspdCToMySQL;

if(vspdctomysql->ConnMySQL(host,port,dbname,user,passwd,charset,Msg) == 0)

printf("连接成功 ");

else

printf(Msg);

//查询

char * SQL = "SELECT id,number FROM abc";//从数据库image表abc查询id,name项的值

string str = vspdctomysql->SelectData(SQL,3,Msg);

if( str.length() > 0 )

{

printf("查询成功 ");

printf(str.data());

printf(" ");

}

else

{

printf(Msg);

}

//插入

SQL = "insert into abc values('fh','10')";

if(vspdctomysql->InsertData(SQL,Msg) == 0)

printf("插入成功 ");

//更新

//SQL = "update vcaccesstest set username = '修改了',passwd='2345' where ids = 3 ";

//if(vspdctomysql->UpdateData(SQL,Msg) == 0)

// printf("更新成功/r/n");

//删除

//SQL = "delete from vcaccesstest where ids = 3 ";

//if(vspdctomysql->DeleteData(SQL,Msg) == 0)

// printf("删除成功/r/n");

// vspdctomysql->CloseMySQLConn();

return 0;

}

原文地址:https://www.cnblogs.com/xsfmg/p/5113682.html