mysql安装最后一步error nr.1045搞得
第一步, 安装:
只需要安装mysql服务器以及向导配置mysql环境, 配置环境最后一步的出错处理:
http://jingyan.baidu.com/article/3f16e003c54e152590c10378.html
mysql安装最后一步error nr.1045搞得
手动停止mysql服务。
MySQL\MySQL Server 5.0\ 目录下的my.ini文件,在[mysqld]下添加
skip-grant-tables
启动mysql服务后就可以以空密码登录,
务必修改root密码
把 skip-grant-tables 这一句删掉MySQL\MySQL Server 5.0\ 目录下的my.ini文件)
重启mysql服务。
第二步, 在VS环境(C++语言)中的使用(C++项目的平台(Win32或者X64)必须与mysql的安装的版本匹配, 可以不与操作系统的版本(64位)匹配):
http://blog.csdn.net/xiongwenwu/article/details/12870983
由于我们要使用Mysql的API,并且我们机子上肯定安装了Mysql数据库,所以我们要将工程的头文件路径指向Mysql安装目录的同文件mysql.h所在的位置,将连接库路径指向libmysql.lib所在的路径,
在我的机子上,Mysql 的安装路径为:C:\mysql\mysql-5.6.14-winx64\include,C:\mysql\mysql-5.6.14-winx64\lib和下面图片不符,自己找自己的目录
高版本的mysql可能没有opt这个目录层次了,只要找到libmysql.lib这个目录就行
我们需要把VS2008的工程中的头文件路径和连接库路径指向上面的两个地方:
将x项目属性页的C/C++->常规->附加包含目录指向:C:\mysql\mysql-5.6.14-winx64\include
将项目属性页的链接器->常规->附加库目录指向:C:\mysql\mysql-5.6.14-winx64\lib
将链接器->输入->附加依赖项中添加libmysql.lib。
以下为自己代码
代码:
//头文件包含
#include "winsock.h"
#include "mysql.h"
//#pragma comment(lib, "libmysql.lib")
//#pragma comment(lib,"C:\\Program Files\\MySQL\\MySQL Server 5.5\\lib\\libmysql.lib")
#pragma comment (lib, "libmysql.lib")
#pragma comment (lib, "mysqlclient.lib")
//代码
MYSQL * dbCon; //= mysql_init((MYSQL*) 0);
MYSQL_RES *dbRes;
MYSQL_ROW dbRow;
bool connDbOK=false;
char szDbName[32] = "StockAnalyse";
dbCon = mysql_init((MYSQL*) 0);
if ( dbCon !=NULL && mysql_real_connect(dbCon,"localhost","root","123456",szDbName,3306,NULL,0) )
{
if (!mysql_select_db(dbCon,szDbName))
{
connDbOK = true;
}
}
CString strErr;
char szSQL[2048];
_snprintf(szSQL, sizeof(szSQL), "insert into tradeVolumeStat values(%d, %f, %f, %f, %f , '%s', '%s', %f, %f, %f, %f, %f)",
m_nDaysCalLength, m_fPriceDropAmpl, m_fSmallestVolRatio,m_fPriceStrongThres, m_fPriceRiseAmpl,
pStock->GetStockCode(), strDate.GetBuffer(strDate.GetLength()), priceInfo0.closePrice, ampl1, ampl2, ampl3, ampl4);
if(connDbOK)
{
int rt = mysql_real_query(dbCon,szSQL,strlen(szSQL));
if (rt)
{
strErr.Format(_T("Error making query: %s "), mysql_error(dbCon));
AfxMessageBox(strErr);
}
}