vc++目录下配置相应的mysql文件加中的include,lib文件
编辑器换成x64
部分会出现“由于找不到ibcrypto-1_1-x64.dll”问题
请参考博客
【由于找不到 ibcrypto-1_1-x64.dll或者libssl-1_1-x64.dll,无法继续执行代码问题 - CSDN App】http://t.csdnimg.cn/eJIqB
在该项目的文件目录下配置mysql文件下的libmyql.dll,libmysql.lib文件
添加mysqll.h文件
// HMySQL
// 功能描述:实现对MySQL访问操作的封装
#ifndef __HMYSQL__H__
#define __HMYSQL_H__
#include
#include
#include
#define ERROR_QUERY_FAIL -1 // 操作失败
// 定义MySQL连接信息
typedef struct
{
char* server;
char* user;
char* password;
char* database;
int port;
}MySQLConInfo;
class HMySQL
{
public:
HMySQL();
virtual ~HMySQL();
void SetMySQLConInfo(char* server, char* username, char* password, char* database, int port);// 设置连接信息
bool Open(); // 打开连接
void Close(); // 关闭连接
bool Select(const std::string& Querystr, std::vector >& data); // 读取数据
bool Query(const std::string& Querystr); // 其他操作
int GetInsertID(const std::string& Querystr);// 插入并获取插入的ID,针对自动递增ID
void ErrorIntoMySQL(); // 错误消息
public:
int ErrorNum; // 错误代号
const char* ErrorInfo; // 错误提示
private:
MySQLConInfo mysqlcon; // 连接信息 库
MYSQL mysql; // MySQL对象 表
MYSQL_RES *result; // 用于存放结果
};
#endif
添加mysqll.cpp文件:
#include "stdafx.h"
#include "HMySQL.h"//若多个文件包含,需要把该句移动到stdafx.h中
HMySQL::HMySQL() :
ErrorNum(0), ErrorInfo("ok")
{
mysql_library_init(0, NULL, NULL);
mysql_init(&mysql);
// 设置字符集,否则无法处理中文
mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, "gbk");
}
HMySQL::~HMySQL()
{
}
// 设置连接信息
void HMySQL::SetMySQLConInfo(char* server, char* username, char* password, char* database, int port)
{
mysqlcon.server = server;
mysqlcon.user = username;
mysqlcon.password = password;
mysqlcon.database = database;
mysqlcon.port = port;
}
// 打开连接
bool HMySQL::Open()
{
if (mysql_real_connect(&mysql, mysqlcon.server, mysqlcon.user,
mysqlcon.password, mysqlcon.database, mysqlcon.port, 0, 0) != NULL)
{
return true;
}
else
{
ErrorIntoMySQL();
return false;
}
}
// 断开连接
void HMySQL::Close()
{
mysql_close(&mysql);
}
//读取数据
bool HMySQL::Select(const std::string& Querystr, std::vector >& data)
{
if (0 != mysql_query(&mysql, Querystr.c_str()))//0是成功,传输失败
{
ErrorIntoMySQL();
return false;
}
result = mysql_store_result(&mysql);
// 行列数
int row = mysql_num_rows(result);
int field = mysql_num_fields(result);
MYSQL_ROW line = NULL;
line = mysql_fetch_row(result);
int j = 0;
std::string temp;
std::vector >().swap(data);
while (NULL != line)
{
std::vector linedata;
for (int i = 0; i < field; i++)
{
if (line[i])
{
temp = line[i];
linedata.push_back(temp);
}
else
{
temp = "";
linedata.push_back(temp);
}
}
line = mysql_fetch_row(result);
data.push_back(linedata);
}
return true;
}
// 其他增删改的操作
bool HMySQL::Query(const std::string& Querystr)
{
if (0 == mysql_query(&mysql, Querystr.c_str()))
{
return true;
}
ErrorIntoMySQL();
return false;
}
// 插入并获取插入的ID,针对自动递增ID
int HMySQL::GetInsertID(const std::string& Querystr)
{
if (!Query(Querystr))
{
ErrorIntoMySQL();
return ERROR_QUERY_FAIL;
}
// 获取ID
return mysql_insert_id(&mysql);
}
//错误信息
void HMySQL::ErrorIntoMySQL()
{
ErrorNum = mysql_errno(&mysql);
ErrorInfo = mysql_error(&mysql);
}
stadfx.h添加:
建立一个新界面
添加一个编辑框及按钮
通过类向导添加student类
studentDlg.cpp文件:
// StudentDlg.cpp : 实现文件
//
#include
char* server1="localhost";
char* username1="root";
char* password1="123456";
char* database1="movie";
int port1=3306;
#include "stdafx.h"
#include "list课堂.h"
#include "StudentDlg.h"
#include "afxdialogex.h"
// StudentDlg 对话框
IMPLEMENT_DYNAMIC(StudentDlg, CDialogEx)
StudentDlg::StudentDlg(CWnd* pParent /*=NULL*/)
: CDialogEx(StudentDlg::IDD, pParent)
{
}
StudentDlg::~StudentDlg()
{
}
void StudentDlg::DoDataExchange(CDataExchange* pDX)
{
CDialogEx::DoDataExchange(pDX);
DDX_Control(pDX, IDC_LIST1, m_list);
}
BEGIN_MESSAGE_MAP(StudentDlg, CDialogEx)
ON_BN_CLICKED(IDC_BUTTON1, &StudentDlg::OnBnClickedButton1)
END_MESSAGE_MAP()
// StudentDlg 消息处理程序
BOOL StudentDlg::OnInitDialog()
{
CDialogEx::OnInitDialog();
// TODO: 在此添加额外的初始化
SetList();
//ConnectBD();//连接数据库
//hmysql.SetMySQLConInfo("localhost","root","123456","movie",3306);
MYSQL m_sql;
mysql_init(&m_sql);
if(!mysql_real_connect(&m_sql,"localhost","root","123456","movie",3306,NULL,0)){
MessageBox("连接失败!");}
else
{MessageBox("连接成功!");
mysql_set_character_set(&m_sql,"gb2312");
}
//LoadData(); //加载数据
//showData();
return TRUE; // return TRUE unless you set the focus to a control
// 异常: OCX 属性页应返回 FALSE
}
void StudentDlg::SetList()
{
m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
m_list.InsertColumn(0,_T("学号"),0,100);//0为左对齐,2为居中对齐
m_list.InsertColumn(1,_T("姓名"),0,100);
m_list.InsertColumn(2,_T("性别"),0,100);
m_list.InsertColumn(3,_T("年龄"),2,100);
}
void StudentDlg:: showData()//AllData
{for(int i=0;i
studentDlg.h文件:
#pragma once
#include"HMySQL.h"
// StudentDlg 对话框
class StudentDlg : public CDialogEx
{
DECLARE_DYNAMIC(StudentDlg)
public:
StudentDlg(CWnd* pParent = NULL); // 标准构造函数
virtual ~StudentDlg();
vectorOneStr;
vector>AllStr;
//定义对象
HMySQL hmysql;
void SetList();
void LoadData();
void showData();
void ConnectBD();
// 对话框数据
enum { IDD = IDD_DIALOG2 };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
DECLARE_MESSAGE_MAP()
public:
CListCtrl m_list;
virtual BOOL OnInitDialog();
afx_msg void OnBnClickedButton1();
};
效果图