#pragma comment(lib,"E:\\mysql-connector-c-noinstall-6.0.2-win32\\lib\\libmysql.lib")
#include<iostream>
#include<string>
#include<mysql.h>
#include <assert.h>
using namespace std;
class MyDB
{
public:
MyDB();
~MyDB();
bool initDB(string host, string user, string pwd, string db_name);
bool exeSQL(string sql);
private:
MYSQL *connection;
MYSQL_RES *result;
MYSQL_ROW row;
};
MyDB::MyDB()
{
connection = mysql_init(NULL); // 初始化数据库连接变量
if(connection == NULL)
{
cout << "Error:" << mysql_error(connection);
exit(1);
}
}
MyDB::~MyDB()
{
if(connection != NULL) // 关闭数据库连接
{
mysql_close(connection);
}
}
bool MyDB::initDB(string host, string user, string pwd, string db_name)
{
// 函数mysql_real_connect建立一个数据库连接
// 成功返回MYSQL*连接句柄,失败返回NULL
connection = mysql_real_connect(connection, host.c_str(),
user.c_str(), pwd.c_str(), db_name.c_str(), 0, NULL, 0);
if(connection == NULL)
{
cout << "Error:" << mysql_error(connection);
exit(1);
}
return true;
}
bool MyDB::exeSQL(string sql)
{
// mysql_query()执行成功返回0,失败返回非0值。与PHP中不一样
if(mysql_query(connection, sql.c_str()))
{
cout << "Query Error:" << mysql_error(connection);
exit(1);
}
else
{
result = mysql_store_result(connection); // 获取结果集
// mysql_field_count()返回connection查询的列数
for(int i=0; i < mysql_num_rows(result); i++) {
//cout<<mysql_num_rows(result)<<endl;
// 获取下一行
row = mysql_fetch_row(result);
if(row <= 0)
{
break;
}
// mysql_num_fields()返回结果集中的字段数
for(int j=0; j < mysql_num_fields(result); ++j)
{
cout << row[j] << " ";
}
//cout<<mysql_fetch_field(result)->name;
//cout<<mysql_fetch_field(result)->data;
cout << endl;
}
// 释放结果集的内存
mysql_free_result(result);
}
return true;
}
using namespace std;
int main()
{
MyDB db;
db.initDB("localhost", "root", "111111", "test");
//db.exeSQL("select * from user");
cout<<endl;
//插入有毛病
//db.exeSQL("INSERT INTO user(username, tele,e_mail,adress,password,role,id) VALUES ('m', '10','m','tt','22','1','14')");
db.exeSQL("UPDATE user SET password = 'Fred' WHERE username = 'd' ");
return 0;
}
插入时一直出问题。
把输出与操作分开就好了。
#pragma comment(lib,"E:\\mysql-connector-c-noinstall-6.0.2-win32\\lib\\libmysql.lib")
#include<iostream>
#include<string>
#include<mysql.h>
#include <assert.h>
using namespace std;
class MyDB
{
public:
MyDB();
~MyDB();
bool initDB(string host, string user, string pwd, string db_name);
bool exeSQL(string sql);
bool output();
private:
MYSQL *connection;
MYSQL_RES *result;
MYSQL_ROW row;
};
MyDB::MyDB()
{
connection = mysql_init(NULL); // 初始化数据库连接变量
if(connection == NULL)
{
cout << "Error:" << mysql_error(connection);
exit(1);
}
}
MyDB::~MyDB()
{
if(connection != NULL) // 关闭数据库连接
{
mysql_close(connection);
}
}
bool MyDB::initDB(string host, string user, string pwd, string db_name)
{
// 函数mysql_real_connect建立一个数据库连接
// 成功返回MYSQL*连接句柄,失败返回NULL
connection = mysql_real_connect(connection, host.c_str(),
user.c_str(), pwd.c_str(), db_name.c_str(), 0, NULL, 0);
if(connection == NULL)
{
cout << "Error:" << mysql_error(connection);
exit(1);
}
return true;
}
bool MyDB::exeSQL(string sql)
{
// mysql_query()执行成功返回0,失败返回非0值。与PHP中不一样
if(mysql_query(connection, sql.c_str()))
{
cout << "Query Error:" << mysql_error(connection);
exit(1);
}
return true;
}
bool MyDB::output(){
string sql="select * from user";
// mysql_query()执行成功返回0,失败返回非0值。与PHP中不一样
if(mysql_query(connection, sql.c_str()))
{
cout << "Query Error:" << mysql_error(connection);
exit(1);
}
else
{
result = mysql_store_result(connection); // 获取结果集
// mysql_field_count()返回connection查询的列数
for(int i=0; i < mysql_num_rows(result); i++) {
//cout<<mysql_num_rows(result)<<endl;
// 获取下一行
row = mysql_fetch_row(result);
if(row <= 0)
{
break;
}
// mysql_num_fields()返回结果集中的字段数
for(int j=0; j < mysql_num_fields(result); ++j)
{
cout << row[j] << " ";
}
//cout<<mysql_fetch_field(result)->name;
//cout<<mysql_fetch_field(result)->data;
cout << endl;
}
// 释放结果集的内存
mysql_free_result(result);
}
return true;
}
using namespace std;
int main()
{
MyDB db;
db.initDB("localhost", "root", "111111", "test");
//db.exeSQL("select * from user");
cout<<endl;
//插入有毛病
//db.exeSQL("INSERT INTO user(username, tele,e_mail,adress,password,role,id) VALUES ('m', '10','m','tt','22','1','14')");
db.exeSQL("UPDATE user SET password = 'Freding' WHERE username = 'd' ");
db.output();
return 0;
}