vs2010利用mfc连接数据库及查询功能

vs2010利用mfc连接数据库及查询功能_第1张图片

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文件

vs2010利用mfc连接数据库及查询功能_第2张图片

添加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添加:

vs2010利用mfc连接数据库及查询功能_第3张图片

建立一个新界面

添加一个编辑框及按钮

通过类向导添加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();
};

效果图

vs2010利用mfc连接数据库及查询功能_第4张图片

你可能感兴趣的:(mfc,数据库,adb)