首先创建一个C++空项目,创建完毕后需要配置下项目。
配置属性,右击项目->属性->
->添加目录为MySql目录下的include->配置完毕后可以开始编写代码了。
用VS编写C++项目连接数据库时提示error LNK2019: 无法解析的外部符号 _mysql_real_connect@32
原因是我的系统是win7x64,MySQL 64位的接口,导致这个问题。
解决方案:
右击项目->属性->配置管理器活动解决方案平台
->下拉选择新建,选择x64即可。
代码部分:
#include <iostream>
#include "winsock.h"
#include "mysql.h"
#include <string>
#pragma comment(lib, "libmySQL.lib")
using namespace std;
int rt;
MYSQL *m_sqlCon = NULL;
MYSQL_RES *res = NULL;
MYSQL_ROW row;
//插入数据
void insertDB(){
char tmp[400];
sprintf( tmp, "insert into %s values(%d,'%s',%f)", "class101",2012, "Kate", 5.0f );//注意红色标签的位置
rt = mysql_real_query(m_sqlCon, tmp, strlen(tmp));
cout << tmp << endl;
cout << rt << endl;
if(rt){
cout << "插入数据失败!" <<endl;
const char *str = mysql_error(m_sqlCon);
cout << str << endl;
}else{
cout <<"插入数据成功!" << endl;
}
}
//删除数据
void deleteDB(){
char tmp[400];
sprintf( tmp, "delete from %s where id=%d or id=%d", "class101", 2012, 2005 );
rt = mysql_real_query(m_sqlCon, tmp, strlen(tmp));
cout << tmp << endl;
cout << rt << endl;
if(rt){
cout << "删除数据失败!" <<endl;
const char *str = mysql_error(m_sqlCon);
cout << str << endl;
}else{
cout <<"删除数据成功!" << endl;
}
}
//更新数据
void updateDB(){
char tmp[400];
sprintf( tmp, "update %s set gpa = %f where id = %d", "class101", 4.0f, 33 );
rt = mysql_real_query(m_sqlCon, tmp, strlen(tmp));
if( rt ){
cout << "更新失败!" << endl;
}else{
cout << "更新成功!" << endl;
}
}
//查询数据
void queryDB(){
char tmp[400];
sprintf( tmp, "select * from %s", "class101" );
rt = mysql_real_query(m_sqlCon, tmp,strlen(tmp));
cout << tmp << endl;
res = mysql_store_result(m_sqlCon);
while( row = mysql_fetch_row(res) ){
for( int i =0; i<mysql_num_fields(res); i++ ){
cout << row[i] << "\t";
}
cout << endl;
}
mysql_free_result(res);
}
int main(){
m_sqlCon = mysql_init((MYSQL*) 0);
if( !mysql_real_connect(m_sqlCon, "localhost", "root", "password","studentdb", 8888, NULL,0 ) ){
cout << "数据库连接失败" << endl;
}else{
cout << "数据库连接成功" << endl;
//updateDB();
//insertDB();
//deleteDB();
queryDB();
}
mysql_close(m_sqlCon);
system( "pause" );
return 0;
}