.CPP----------------------------------------------------------------
#include "Mysql_test.h"
#include <sstream>
using namespace std;
SQL_test::SQL_test(string Database_name)
{
cout<<"START"<<endl;
mysql_init(&m_sqlCon); /* 初始化mysql结构*/
if(!mysql_real_connect(&m_sqlCon, "192.168.1.102","root","1234",Database_name.c_str(),3306,NULL,0))
{
cout<<"数据库连接失败!"<<endl;
}
else
{
cout<<"数据库连接成功!"<<endl;
}
start=0;
srand(unsigned(time(0))); //用时间来安排种子,但是要在一秒之后才行
mysql_query(&m_sqlCon,"set names gbk;");
Init_First_name();
Init_Last_name();
}
SQL_test::~SQL_test()
{
mysql_close(&m_sqlCon);
cout<<"END"<<endl;
}
MYSQL SQL_test::Get_m_sqlCon() //返回一个m_sqlCon
{
return m_sqlCon;
}
MYSQL_ROW SQL_test::Get_row() //返回行
{
return row;
}
void SQL_test::SQL_Insert() //插入数据
{
Patient_ID=30500;
Patient_number=1000;
// cout<<"插入数据"<<endl;
for(int i=0;i<10;i++)
{
Patient_age=Random(1,100); //随机年龄
Patient_sex=Random(0,2); //随机性别
Patient_name=Connect_First_Last();
char SQL_insert[200];
sprintf(SQL_insert, "insert into patient(PatientID,number,name,sex,age) values('%d','%d','%s','%d','%d')",Patient_ID++,Patient_number++ ,Patient_name.c_str(),Patient_sex,Patient_age);
cout<<SQL_insert<<endl;
result=mysql_query(&m_sqlCon,SQL_insert);
if(!result)
{
cout<<"插入数据成功"<<endl;
}
else
{
cout<<"插入数据失败"<<endl;
}
}
}
void SQL_test::SQL_Select() //查询数据
{
// cout<<"查询数据"<<endl;
// mysql_query(&m_sqlCon,"set names gbk;"); //设置连接编码!!!!
if(mysql_query(&m_sqlCon,"select * from patient")) //如果查询成功,函数返回零。如果发生一个错误,函数返回非零
{
cout<<"数据库查询发生错误"<<endl;
}
else
{
MYSQL_RES *resultRES_temp;
resultRES_temp = mysql_store_result(&m_sqlCon); // 获得结果集
CurrentRow=1;
if(mysql_num_rows(resultRES_temp)!= NULL)
{
numRows = mysql_num_rows(resultRES_temp); // 获得结果集中的记录数 row 行
numFields = mysql_num_fields(resultRES_temp); // 获得表中字段数
cout<<"共"<<numRows<<"行记录,每行"<<numFields<<"个字段"<<endl;
while (row= mysql_fetch_row(resultRES_temp))
{
cout<<"第"<<CurrentRow<<"行:";
for (CurrentFiled = 0; CurrentFiled<numFields; CurrentFiled++)
{
if(row[CurrentFiled]!=NULL)
cout<<row[CurrentFiled]<<" "; // 打印字段值
}
CurrentRow++;
cout<<endl;
}
}
else
{
cout<<"无查询结果!"<<endl;
}
mysql_free_result(resultRES_temp); // 释放结果集
}
}
void SQL_test::SQL_Update() //更新数据
{
cout<<"更新数据"<<endl;
if(mysql_query(&m_sqlCon,"update patient set age=20 where PatientID='10030217'")) //如果查询成功,函数返回零。如果发生一个错误,函数返回非零
{
cout<<"更新数据发生错误"<<endl;
}
else
{
cout<<"更新数据进行成功"<<endl;
}
}
void SQL_test::SQL_Delete() //删除数据
{
// cout<<"删除数据"<<endl;
if(mysql_query(&m_sqlCon,"delete from patient ")) //如果查询成功,函数返回零。如果发生一个错误,函数返回非零
{
cout<<"删除数据发生错误"<<endl;
}
else
{
cout<<"删除数据进行成功"<<endl;
}
}
int SQL_test::Random(int start,int end) //返回随机数
{
// srand(unsigned(time(0))); //用时间来安排种子,但是要在一秒之后才行
return start+(rand()%(end-start)); //在[a,b)之间随机整数,使用a+(rand()%(b-a))
}
void SQL_test::Init_First_name()
{
First_name[0]="赵"; First_name[1]="钱"; First_name[2]="孙"; First_name[3]="李"; First_name[4]="周"; First_name[5]="吴"; First_name[6]="郑";
First_name[7]="王"; First_name[8]="冯"; First_name[9]="陈"; First_name[10]="褚"; First_name[11]="卫"; First_name[12]="蒋"; First_name[13]="沈";
First_name[14]="韩"; First_name[15]="杨"; First_name[16]="朱"; First_name[17]="秦"; First_name[18]="尤"; First_name[19]="许"; First_name[20]="何";
First_name[21]="吕"; First_name[22]="施"; First_name[23]="张"; First_name[24]="孔"; First_name[25]="曹"; First_name[26]="严"; First_name[27]="华";
First_name[28]="金"; First_name[29]="魏"; First_name[30]="陶"; First_name[31]="姜";
}
void SQL_test::Choice_First_name(int sum) //随机选择姓氏
{
for(int i=0;i<sum;i++)
{
cout<<First_name[Random(0,FIRST_NAME_END)]<<" ";
}
}
void SQL_test::Init_Last_name()
{
Last_name[0]="梦"; Last_name[1]="琪"; Last_name[2]="之"; Last_name[3]="桃"; Last_name[4]="慕"; Last_name[5]="青"; Last_name[6]="尔";
Last_name[7]="岚"; Last_name[8]="夏"; Last_name[9]="夜"; Last_name[10]="琴"; Last_name[11]="彤"; Last_name[12]="碧"; Last_name[13]="南";
Last_name[14]="语"; Last_name[15]="蓉"; Last_name[16]="涵"; Last_name[17]="柏"; Last_name[18]="妙"; Last_name[19]="海"; Last_name[20]="菡";
Last_name[21]="旋"; Last_name[22]="易"; Last_name[23]="紫"; Last_name[24]="水"; Last_name[25]="凡"; Last_name[26]="若"; Last_name[27]="雅";
Last_name[28]="真"; Last_name[29]="蕾"; Last_name[30]="瑶"; Last_name[31]="翠"; Last_name[32]="傲"; Last_name[33]="凝"; Last_name[34]="卉";
Last_name[35]="霜"; Last_name[36]="幼"; Last_name[37]="访"; Last_name[38]="丹"; Last_name[39]="山"; Last_name[40]="小"; Last_name[41]="槐";
Last_name[42]="醉"; Last_name[43]="靖"; Last_name[44]="雁"; Last_name[45]="寄"; Last_name[46]="静"; Last_name[47]="谷"; Last_name[48]="惜";
Last_name[49]="安"; Last_name[50]="从"; Last_name[51]="蓝"; Last_name[52]="波"; Last_name[53]="松"; Last_name[54]="晓"; Last_name[55]="友";
}
void SQL_test::Choice_Last_name(int sum) //随机选择名
{
for(int i=0;i<sum;i++)
{
cout<<Last_name[Random(0,LAST_NAME_END)]<<" ";
}
}
string SQL_test::Connect_First_Last()
{
// Choice_First_name(sum);
// Choice_Last_name(sum);
len=Random(2,4); //选择名字长度为2还是3
if(len==2)
Patient_name=First_name[Random(0,FIRST_NAME_END)]+Last_name[Random(0,LAST_NAME_END)];
else if(len==3)
Patient_name=First_name[Random(0,FIRST_NAME_END)]+Last_name[Random(0,LAST_NAME_END)]+Last_name[Random(0,LAST_NAME_END)];
return Patient_name;
}
//头文件------------------------------------------------------
#define FIRST_NAME_END 32
#define LAST_NAME_END 56
#include "stdafx.h"
#include <cstdlib>
#include <string>
#include <iostream>
#include <Winsock2.h>
#include "mysql.h"
#include <ctime>
#pragma once
using namespace std; /*重要*/
class SQL_test
{
public:
SQL_test(string Database_name);
~SQL_test();
void SQL_Insert();
void SQL_Update();
void SQL_Delete();
void SQL_Select();
MYSQL Get_m_sqlCon();
MYSQL_ROW Get_row();
int Random(int start,int end);
void Init_First_name();
void Choice_First_name(int sum);
void Init_Last_name();
void Choice_Last_name(int sum);
string Connect_First_Last(); //将姓和名组合起来
private:
string First_name[FIRST_NAME_END]; //初始化姓氏
string Last_name[LAST_NAME_END]; //初始化名
///对应数据库表Patient参数
int Patient_ID;
int Patient_number;
string Patient_name;
int Patient_sex;
int Patient_age;
///
bool result;//检测返回类型
int CurrentRow;//当前所在的行
int CurrentFiled;//当前字段
MYSQL m_sqlCon;
int numRows;//结果集中的记录行数
int numFields;//结果集中的一条记录的段数
MYSQL_ROW row;
// MYSQL_RESresultRES; //MYSQL结构
int start;//随机数下限
int end;//随机数上限
int sum;//人数;
int len;//名字长度
};