码迷,mamicode.com
首页 > 数据库 > 详细

数据库管理系统MFC实现

时间:2016-06-16 11:43:37      阅读:223      评论:0      收藏:0      [点我收藏+]

标签:

1、materialDlg.h文件

#pragma once
#include "afxshelltreectrl.h"
#include "afxwin.h"


// CmaterialDlg 对话框
class CmaterialDlg : public CDialogEx
{
// 构造
public:
	CmaterialDlg(CWnd* pParent = NULL);	// 标准构造函数

// 对话框数据
	enum { IDD = IDD_MATERIAL_DIALOG };

	protected:
	virtual void DoDataExchange(CDataExchange* pDX);	// DDX/DDV 支持


// 实现
protected:
	HICON m_hIcon;

	// 生成的消息映射函数
	virtual BOOL OnInitDialog();
	afx_msg void OnSysCommand(UINT nID, LPARAM lParam);
	afx_msg void OnPaint();
	afx_msg HCURSOR OnQueryDragIcon();
	DECLARE_MESSAGE_MAP()
public:
	afx_msg void OnBnClickedButton1();
	afx_msg void OnTvnSelchangedMfcshelltree2(NMHDR *pNMHDR, LRESULT *pResult);
	CMFCShellTreeCtrl m_tree;
	afx_msg void OnStnClickedItemSelEdit();
	afx_msg void OnBnClickedButton2();
	int showTableInfo(void *para, int n_column, char **column_value, char **column_name);
	char* CmaterialDlg::AnsiToUTF_8(WCHAR szStr[]);
	//wchar_t* StringTWchar(const string& s);
	//wchar_t* CharToWchar(const char* c);
	wchar_t* CmaterialDlg::c2w(char *str);
	CComboBox m_comboWeb;
	afx_msg void OnEnChangeSelWebEdit();
	afx_msg void OnCbnSelchangeWebCombo();
	afx_msg void OnEnChangeProId();
	CComboBox m_prostyle;
	afx_msg void OnEnChangeEditProStyle();
	afx_msg void OnCbnSelchangeProStyle();
	CString  m_proid;						//已赋值
	CString  m_proname;						//已赋值
	CString	 m_pronodeid;					
	CString	 m_prenodeid;					
	CString  m_nodelayerid;					//已赋值
	CString  m_procorlor;					//已赋值
	CString  m_material;					//已赋值
	CString  m_style;						//已赋值
	CString  m_proremark;					//已赋值
	CString  m_proprice;					//已赋值
	CString  m_pronumber;					//已赋值
	CString  m_prolinkurl;					//已赋值
	CString  m_proseller;					//已赋值
	CString  m_topimageview;
	CString  m_preimageview;
	CString  m_prozippath;
	CString  m_proobjpath;					//已赋值
	CString  m_proisdeleted;				//已赋值
	CString  m_proupdatetime;				//已赋值
	afx_msg void OnBnClickedButton5();
	afx_msg void OnBnClickedButton6();
};
2、materialDlg.cpp实现文件

#include "stdafx.h"
#include "material.h"
#include "materialDlg.h"
#include "afxdialogex.h"
#include "sqlite3.h"
#include <Windows.h>
#include <iostream>
#include <stdlib.h>
#include <math.h>

#ifdef _DEBUG
#define new DEBUG_NEW
#endif


// 用于应用程序“关于”菜单项的 CAboutDlg 对话框

class CAboutDlg : public CDialogEx
{
public:
	CAboutDlg();

// 对话框数据
	enum { IDD = IDD_ABOUTBOX };

	protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持

// 实现
protected:
	DECLARE_MESSAGE_MAP()
};

CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD)
{
}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialogEx::DoDataExchange(pDX);
}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)
END_MESSAGE_MAP()


// CmaterialDlg 对话框



CmaterialDlg::CmaterialDlg(CWnd* pParent /*=NULL*/)
	: CDialogEx(CmaterialDlg::IDD, pParent)
{
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CmaterialDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialogEx::DoDataExchange(pDX);
	DDX_Control(pDX, IDC_MFCSHELLTREE2, m_tree);
	DDX_Control(pDX, IDC_WEB_COMBO, m_comboWeb);
	DDX_Control(pDX, IDC_PRO_STYLE, m_prostyle);
}

BEGIN_MESSAGE_MAP(CmaterialDlg, CDialogEx)
	ON_WM_SYSCOMMAND()
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	ON_BN_CLICKED(IDC_BUTTON1, &CmaterialDlg::OnBnClickedButton1)
	ON_NOTIFY(TVN_SELCHANGED, IDC_MFCSHELLTREE2, &CmaterialDlg::OnTvnSelchangedMfcshelltree2)
	ON_BN_CLICKED(IDC_BUTTON2, &CmaterialDlg::OnBnClickedButton2)
	ON_EN_CHANGE(IDC_SEL_WEB_EDIT, &CmaterialDlg::OnEnChangeSelWebEdit)
	ON_CBN_SELCHANGE(IDC_WEB_COMBO, &CmaterialDlg::OnCbnSelchangeWebCombo)
	ON_EN_CHANGE(IDC_PRO_ID, &CmaterialDlg::OnEnChangeProId)
	ON_EN_CHANGE(IDC_EDIT_PRO_STYLE, &CmaterialDlg::OnEnChangeEditProStyle)
	ON_CBN_SELCHANGE(IDC_PRO_STYLE, &CmaterialDlg::OnCbnSelchangeProStyle)
	ON_BN_CLICKED(IDC_BUTTON5, &CmaterialDlg::OnBnClickedButton5)
	ON_BN_CLICKED(IDC_BUTTON6, &CmaterialDlg::OnBnClickedButton6)
END_MESSAGE_MAP()


// CmaterialDlg 消息处理程序

BOOL CmaterialDlg::OnInitDialog()
{
	CDialogEx::OnInitDialog();

	m_tree.SetFlags((SHCONTF)(SHCONTF_FOLDERS | SHCONTF_NONFOLDERS));
	// 将“关于...”菜单项添加到系统菜单中。

	// IDM_ABOUTBOX 必须在系统命令范围内。
	ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
	ASSERT(IDM_ABOUTBOX < 0xF000);

	CMenu* pSysMenu = GetSystemMenu(FALSE);
	if (pSysMenu != NULL)
	{
		BOOL bNameValid;
		CString strAboutMenu;
		bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
		ASSERT(bNameValid);
		if (!strAboutMenu.IsEmpty())
		{
			pSysMenu->AppendMenu(MF_SEPARATOR);
			pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
		}
	}

	// 设置此对话框的图标。  当应用程序主窗口不是对话框时,框架将自动
	//  执行此操作
	SetIcon(m_hIcon, TRUE);			// 设置大图标
	SetIcon(m_hIcon, FALSE);		// 设置小图标

	ShowWindow(SW_MAXIMIZE);

	// TODO:  在此添加额外的初始化代码
	// 为组合框控件的列表框添加列表项“床头柜”   
	m_comboWeb.AddString(_T("床头柜"));
	m_comboWeb.AddString(_T("组合沙发"));
	m_comboWeb.AddString(_T("简易沙发"));
	m_comboWeb.AddString(_T("电视柜"));
	m_comboWeb.AddString(_T("餐桌"));
	m_comboWeb.AddString(_T("掩门衣柜"));
	m_comboWeb.AddString(_T("茶几"));
	m_comboWeb.AddString(_T("椅子"));
	m_comboWeb.AddString(_T("餐椅"));
	m_comboWeb.AddString(_T("空调"));
	m_comboWeb.AddString(_T("冰箱"));
	m_comboWeb.AddString(_T("电视"));
	m_comboWeb.AddString(_T("暖气片"));
	m_comboWeb.AddString(_T("画"));
	m_comboWeb.AddString(_T("吊顶"));
	m_comboWeb.AddString(_T("餐具"));
	m_comboWeb.AddString(_T("洗簌池"));
	m_comboWeb.AddString(_T("浴缸"));
	m_comboWeb.AddString(_T("背景墙"));
	m_comboWeb.AddString(_T("吊灯"));
	m_comboWeb.AddString(_T("书柜"));
	m_comboWeb.AddString(_T("妆台"));
	m_comboWeb.AddString(_T("橱柜"));
	m_comboWeb.AddString(_T("衣柜"));
	m_comboWeb.AddString(_T("水果盘"));
	m_comboWeb.AddString(_T("淋浴头"));
	m_comboWeb.AddString(_T("淋浴房"));
	m_comboWeb.AddString(_T("马桶"));
	m_comboWeb.AddString(_T("洗脸盆"));
	m_comboWeb.AddString(_T("装饰品"));
	m_comboWeb.AddString(_T("壁画"));
	m_comboWeb.AddString(_T("台灯"));
	m_comboWeb.AddString(_T("落地台灯"));
	m_comboWeb.AddString(_T("吊灯"));
	m_comboWeb.AddString(_T("窗帘"));
	m_comboWeb.AddString(_T("凳子"));
	m_comboWeb.AddString(_T("壁炉"));
	m_comboWeb.AddString(_T("地毯"));
	m_comboWeb.AddString(_T("鞋柜"));
	m_comboWeb.AddString(_T("花瓶"));
	m_comboWeb.AddString(_T("吸顶灯"));
	m_comboWeb.AddString(_T("靠垫"));
	m_comboWeb.AddString(_T("装饰品"));
	m_comboWeb.AddString(_T("茶几"));
	m_comboWeb.AddString(_T("花洒"));
	m_comboWeb.AddString(_T("小便池"));
	m_comboWeb.AddString(_T("拖把池"));
	m_comboWeb.AddString(_T("浴巾架"));
	m_comboWeb.AddString(_T("水龙头"));
	m_comboWeb.AddString(_T("抱枕"));
	m_comboWeb.AddString(_T("床"));
	m_comboWeb.AddString(_T("沙发"));
	// 在组合框控件的列表框中索引为1的位置插入列表项“组合床”   
	m_comboWeb.InsertString(1, _T("组合床"));

	// 默认选择第一项   
	m_comboWeb.SetCurSel(0);
	// 编辑框中默认显示第一项的文字“组合床”   
	SetDlgItemText(IDC_SEL_WEB_EDIT, _T("pro_name"));



	m_prostyle.AddString(_T("欧式"));
	m_prostyle.AddString(_T("现代简约"));
	m_prostyle.AddString(_T("田园"));
	m_prostyle.AddString(_T("美式"));
	m_prostyle.AddString(_T("其他"));
	m_prostyle.InsertString(1, _T("中式"));
	m_prostyle.SetCurSel(0);
	// 编辑框中默认显示第一项的文字“中式”   
	SetDlgItemText(IDC_EDIT_PRO_STYLE , _T("pro_style"));

	/***********赋值操作************/
	m_proremark = "不详";
	m_nodelayerid = "0000";
	m_procorlor = "不详";
	m_material = "null";
	m_proprice = "0";
	m_prolinkurl = "null";
	m_proseller = "null";
	m_proisdeleted = "0";
	m_proupdatetime = "";

	time_t t = time(0);
	char tmp[64];
	strftime(tmp, sizeof(tmp), "%Y-%m-%d %X", localtime(&t));
	m_proupdatetime = tmp;

	
	 m_pronodeid="0000";
	 m_prenodeid="0000";
	 m_topimageview="0000";
	 m_preimageview="add";
	  m_prozippath="add";
	//	GetDlgItem(IDC_EDIT_OBJ_PATH)->GetWindowText(str);
	return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
}

void CmaterialDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
	if ((nID & 0xFFF0) == IDM_ABOUTBOX)
	{
		CAboutDlg dlgAbout;
		dlgAbout.DoModal();
	}
	else
	{
		CDialogEx::OnSysCommand(nID, lParam);
	}
}

// 如果向对话框添加最小化按钮,则需要下面的代码
//  来绘制该图标。  对于使用文档/视图模型的 MFC 应用程序,
//  这将由框架自动完成。

void CmaterialDlg::OnPaint()
{
	if (IsIconic())
	{
		CPaintDC dc(this); // 用于绘制的设备上下文

		SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);

		// 使图标在工作区矩形中居中
		int cxIcon = GetSystemMetrics(SM_CXICON);
		int cyIcon = GetSystemMetrics(SM_CYICON);
		CRect rect;
		GetClientRect(&rect);
		int x = (rect.Width() - cxIcon + 1) / 2;
		int y = (rect.Height() - cyIcon + 1) / 2;

		// 绘制图标
		dc.DrawIcon(x, y, m_hIcon);
	}
	else
	{
		CDialogEx::OnPaint();
	}
}

//当用户拖动最小化窗口时系统调用此函数取得光标
//显示。
HCURSOR CmaterialDlg::OnQueryDragIcon()
{
	return static_cast<HCURSOR>(m_hIcon);
}
int CmaterialDlg::showTableInfo(void *para, int n_column, char **column_value, char **column_name)
{
	int i;
	printf("记录包含%d个字段\n", n_column);
	for (i = 0; i<n_column; i++)
	{
		printf("字段名:%s  >> 字段值:%s\n", column_name[i], column_value[i]);
	}
	printf("--------------------------------------n");
	return 0;
}
void CmaterialDlg::OnBnClickedButton1()
{
	char *errMsg;
	int rc;
	sqlite3 *db;
	int result;
	char **dbResult;
	int nRow, nColumn;
	std::string rtnSql;
	char *errmsg = NULL;
	int i, j;
	int index;
	CString maxid;
	std::string maxProid = "select MAX(pro_id) from ProductInfo";
	std::string insertSql = "insert into ProductInfo values (101,'ww',26,26,26,'ww','ww','ww','ww',26,'ww','ww','ww','ww','ww','ww','ww',26,'2016-04-14 22:47:19.000')";
	//	_RecordsetPtr m_pRecordset;
	const char* path = "D://Project//HouseDesign//data//database//HouseDesignDB.db";
	rc = sqlite3_open(path, &db);
	if (rc == SQLITE_OK)
	{
		const char* select = "select * from ProductInfo";
		//	MessageBox(NULL, _T("打开数据库成功!"), _T("消息"), MB_OK | MB_ICONWARNING);
		/****************************************************************/
	//	rc = sqlite3_exec(db, insertSql.c_str(), NULL, NULL, &errMsg);            //插入一条数据;
		/****************************************************************/
	//	rc = sqlite3_exec(db, maxProid.c_str(), NULL, NULL, &errMsg);
		/****************************************************************/
		result = sqlite3_get_table(db, maxProid.c_str(), &dbResult, &nRow, &nColumn, &errmsg);
		if (SQLITE_OK == result)
		{
			index = nColumn;
			printf("查到%d条记录\n", nRow);
			for (i = 0; i < nRow; i++)
			{
				printf("第 %d 条记录\n", i + 1);
				for (j = 0; j < nColumn; j++)
				{
					printf("字段名:%s> 字段值:%s\n", dbResult[j], dbResult[index]);
					maxid = dbResult[index];
					int temp = _ttoi(maxid)+1;
					m_proid.Format(_T("%d"),temp);
					SetDlgItemText(IDC_PRO_ID, m_proid);                                //显示插入的pro_id
					++index; // dbResult 的字段值是连续的,从第0索引到第 nColumn - 1索引都是字段名称,从第 nColumn 索引开始,后面都是字段值,它把一个二维的表(传统的行列表示法)用一个扁平的形式来表示
				}
				printf("-------\n");
			}
		}

		/****************************************************************/
		//if (rc != SQLITE_OK)
		//{
		//	printf("创建表失败,错误码:%d,错误原因:%sn", rc, errMsg);
		//	MessageBox(NULL, _T("创建表user失败!"), _T("错误"), MB_ICONWARNING);
		//}
		//rc = sqlite3_exec(db, "insert into user values('123','测试')", NULL, NULL, &errMsg);
		//if (rc != SQLITE_OK)
		//{
		//	MessageBox(NULL, _T("插入数据失败!"), _T("错误"), MB_ICONWARNING);
		//}
	//	rc = sqlite3_exec(db, "select * from user", showTableInfo, NULL, &errMsg);
		//if (rc != SQLITE_OK)
		//{
		//	MessageBox(NULL, _T("查询失败!"), _T("错误"), MB_ICONWARNING);
		//}
		//到这里,不论数据库查询是否成功,都释放 char** 查询结果,使用 sqlite 提供的功能来释放
		sqlite3_free_table(dbResult);
		//关闭数据库
		sqlite3_close(db);
	}
	// TODO:  在此添加控件通知处理程序代码
}


void CmaterialDlg::OnTvnSelchangedMfcshelltree2(NMHDR *pNMHDR, LRESULT *pResult)
{
	LPNMTREEVIEW pNMTreeView = reinterpret_cast<LPNMTREEVIEW>(pNMHDR);

	// TODO:  在此添加控件通知处理程序代码
	*pResult = 0;
	CString strText; // 树节点的标签文本字符串  
	CString fileText;
	CString totalText,temp;
	temp = L".obj";

	m_tree.GetItemPath(strText, pNMTreeView->itemNew.hItem);
	// 获取当前选中节点的句柄   
	HTREEITEM hItem = m_tree.GetSelectedItem();
	// 获取选中节点的标签文本字符串   
	fileText = m_tree.GetItemText(hItem);
	// 将字符串显示到编辑框中  
	if (strText != "" || fileText=="计算机")
	{
		totalText = strText;
		SetDlgItemText(IDC_ITEM_SEL_EDIT, totalText);
	}
	else 
	{
		int length = fileText.GetLength();
		if (int flag = fileText.Find(temp))
		{
			if (flag < 0)
			{
				return;
			}
			else
			{
				for (int i = 0; i < fileText.GetLength(); i++)
				{
					if (fileText[i] != (CString)".")
					{
						m_pronumber += fileText[i];
					}
					else if (fileText[i] == (CString)".")
						return;
				}
				SetDlgItemText(IDC_ITEM_SEL_EDIT, fileText);
			}
		}
	}		
}



void CmaterialDlg::OnBnClickedButton2()
{
	// TODO:  在此添加控件通知处理程序代码
	int rc;
	sqlite3 *db;
	int result;
	char **dbResult;
	int nRow, nColumn;
	char *errmsg = NULL;
	int i, j;
	int index;
	char* output= NULL;
	wchar_t *convert;
	const char* path = "D://Project//HouseDesign//data//database//HouseDesignDB.db";
	rc = sqlite3_open(path, &db);
	if (rc == SQLITE_OK)
	{
		const char* select = "select * from user";
		//	MessageBox(NULL, _T("打开数据库成功!"), _T("消息"), MB_OK | MB_ICONWARNING);
		/****************************************************************/
		result = sqlite3_get_table(db, select, &dbResult, &nRow, &nColumn, &errmsg);
		if (SQLITE_OK == result)
		{
			index = nColumn;
			printf("查到%d条记录\n", nRow);
			for (i = 0; i < nRow; i++)
			{
				printf("第 %d 条记录\n", i + 1);
				for (j = 1; j < nColumn; j++)
				{
					printf("字段名:%s> 字段值:%s\n", dbResult[j], dbResult[index]);
					convert  = c2w(dbResult[index]);
		//			output = UnicodeToUTF_8(output, convert);
					SetDlgItemText(IDC_ITEM_SEL_EDIT, (LPCTSTR)dbResult[index]);
					++index; // dbResult 的字段值是连续的,从第0索引到第 nColumn - 1索引都是字段名称,从第 nColumn 索引开始,后面都是字段值,它把一个二维的表(传统的行列表示法)用一个扁平的形式来表示
				}
				printf("-------\n");
			}
		}
	}
}
using namespace std;
string ASCII2UTF_8(string& strAsciiCode)
{
	string strRet("");
	//先把 ascii 转为 unicode 
//	wstring wstr = Acsi2WideByte(strAsciiCode);
	//最后把 unicode 转为 utf8 
//	strRet = Unicode2Utf8(wstr);
	return strRet;
}
char* CmaterialDlg::AnsiToUTF_8(WCHAR szStr[])
{
	//	WCHAR szStr[] = _T("中国");

		int u8Len = WideCharToMultiByte(CP_UTF8, NULL, szStr, wcslen(szStr), NULL, 0, NULL, NULL);

		char * szU8 = new char[u8Len + 1];

		WideCharToMultiByte(CP_UTF8, NULL, szStr, wcslen(szStr), szU8, u8Len, NULL, NULL);

		szU8[u8Len] = '\0';

		printf(szU8);
		return szU8;
}
wchar_t* CmaterialDlg::c2w(char *str)
{
	int length = strlen(str) + 1;
	wchar_t *t = (wchar_t*)malloc(sizeof(wchar_t)*length);
	memset(t, 0, length*sizeof(wchar_t));
	MultiByteToWideChar(CP_ACP, 0, str, strlen(str), t, length);
	return t;
}

void CmaterialDlg::OnEnChangeSelWebEdit()
{
	// TODO:  如果该控件是 RICHEDIT 控件,它将不
	// 发送此通知,除非重写 CDialogEx::OnInitDialog()
	// 函数并调用 CRichEditCtrl().SetEventMask(),
	// 同时将 ENM_CHANGE 标志“或”运算到掩码中。

	// TODO:  在此添加控件通知处理程序代码
}


void CmaterialDlg::OnCbnSelchangeWebCombo()
{
	// TODO:  在此添加控件通知处理程序代码
	CString strWeb;
	int nSel;

	// 获取组合框控件的列表框中选中项的索引   
	nSel = m_comboWeb.GetCurSel();
	// 根据选中项索引获取该项字符串   
	m_comboWeb.GetLBText(nSel, strWeb);
	// 将组合框中选中的字符串显示到IDC_SEL_WEB_EDIT编辑框中 
	m_proname = strWeb;
	SetDlgItemText(IDC_SEL_WEB_EDIT, strWeb);
}


void CmaterialDlg::OnEnChangeProId()
{
	// TODO:  如果该控件是 RICHEDIT 控件,它将不
	// 发送此通知,除非重写 CDialogEx::OnInitDialog()
	// 函数并调用 CRichEditCtrl().SetEventMask(),
	// 同时将 ENM_CHANGE 标志“或”运算到掩码中。

	// TODO:  在此添加控件通知处理程序代码
}



void CmaterialDlg::OnEnChangeEditProStyle()
{
	// TODO:  如果该控件是 RICHEDIT 控件,它将不
	// 发送此通知,除非重写 CDialogEx::OnInitDialog()
	// 函数并调用 CRichEditCtrl().SetEventMask(),
	// 同时将 ENM_CHANGE 标志“或”运算到掩码中。

	// TODO:  在此添加控件通知处理程序代码
}


void CmaterialDlg::OnCbnSelchangeProStyle()
{
	// TODO:  在此添加控件通知处理程序代码
	CString temp;
	int nsel;

	// 获取组合框控件的列表框中选中项的索引   
	nsel = m_prostyle.GetCurSel();
	// 根据选中项索引获取该项字符串   
	m_prostyle.GetLBText(nsel, temp);
	m_style = temp;
	// 将组合框中选中的字符串显示到IDC_SEL_WEB_EDIT编辑框中   
	SetDlgItemText(IDC_EDIT_PRO_STYLE, temp);
}




void CmaterialDlg::OnBnClickedButton5()
{
	// TODO:  在此添加控件通知处理程序代码
	//CEdit* pBoxOne;
	//pBoxOne = (CEdit*)GetDlgItem(IDC_EDIT8);
	////赋值 
	////pBoxOne-> SetWindowText( _T("FOO ") ); 
	////取值 
	//CString str;
	//pBoxOne->GetWindowText(str);
	m_proobjpath = CString("product/") + m_proid + "/"+m_pronumber + (CString)".obj";
}

wchar_t* CharToWchar(const char* c)
{
	wchar_t* m_wchar = NULL;
	int len = MultiByteToWideChar(CP_ACP, 0, c, strlen(c), NULL, 0);
	m_wchar = new wchar_t[len + 1];
	MultiByteToWideChar(CP_ACP, 0, c, strlen(c), m_wchar, len);
	m_wchar[len] = '\0';
	return m_wchar;
}
wchar_t* StringTWchar(const string& s)
{
	const char* p = s.c_str();
	return CharToWchar(p);
}
void CmaterialDlg::OnBnClickedButton6()
{

	// TODO:  在此添加控件通知处理程序代码
	char *errMsg;
	int rc;
	sqlite3 *db;
	USES_CONVERSION;
	string proid(W2A(m_proid));
	string proname(W2A(m_proname));
	string pronodeid(W2A(m_pronodeid));
	string prenodeid(W2A(m_prenodeid));
	string nodelayerid(W2A(m_nodelayerid));
	string procorlor(W2A(m_procorlor));
	string material(W2A(m_material));
	string style(W2A(m_style));
	string proremark(W2A(m_proremark));
	string proprice(W2A(m_proprice));
	string pronumber(W2A(m_pronumber));
	string prolinkurl(W2A(m_prolinkurl));
	string proseller(W2A(m_proseller));
	string topimageview(W2A(m_topimageview));
	string preimageview(W2A(m_preimageview));
	string prozippath(W2A(m_prozippath));
	string proobjpath(W2A(m_proobjpath));
	string proisdeleted(W2A(m_proisdeleted));
	string proupdatetime(W2A(m_proupdatetime));

	CString strDate;
	COleDateTime ole_time;
	CTime c_time;

	strDate = "2009-4-25 12:30:29";
	ole_time.ParseDateTime(strDate);
	//m_proupdatetime.Format("yyyy-mm-dd 00:00:00.000");

		


	std::string insertSql = "insert into ProductInfo values (" + proid + ",'" + proname + "'," + pronodeid + "," + prenodeid + "," + nodelayerid + ",'" + procorlor + "','" + material + "','" +
		style + "','" + proremark + "'," + proprice + ",'" + pronumber + "','" + prolinkurl + "','" + proseller + "','" + topimageview + "','" + preimageview + "','" + prozippath + "','" + proobjpath +"',"+ proisdeleted + ",'" + proupdatetime + "')";
	//	_RecordsetPtr m_pRecordset;
	wchar_t*	changeInsert = StringTWchar(insertSql);
	char *rtnSql = AnsiToUTF_8(changeInsert);
	const char* path = "D://Project//HouseDesign//data//database//HouseDesignDB.db";
	rc = sqlite3_open(path, &db);
	if (rc == SQLITE_OK)
	{
		//	MessageBox(NULL, _T("打开数据库成功!"), _T("消息"), MB_OK | MB_ICONWARNING);
		/****************************************************************/
		rc = sqlite3_exec(db, rtnSql, NULL, NULL, &errMsg);            //插入一条数据;
	}
}
3、material.cpp实现文件

#include "stdafx.h"
#include "material.h"
#include "materialDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif


// CmaterialApp

BEGIN_MESSAGE_MAP(CmaterialApp, CWinApp)
	ON_COMMAND(ID_HELP, &CWinApp::OnHelp)
END_MESSAGE_MAP()


// CmaterialApp 构造

CmaterialApp::CmaterialApp()
{
	// 支持重新启动管理器
	m_dwRestartManagerSupportFlags = AFX_RESTART_MANAGER_SUPPORT_RESTART;

	// TODO:  在此处添加构造代码,
	// 将所有重要的初始化放置在 InitInstance 中
}


// 唯一的一个 CmaterialApp 对象

CmaterialApp theApp;


// CmaterialApp 初始化

BOOL CmaterialApp::InitInstance()
{
	// 如果一个运行在 Windows XP 上的应用程序清单指定要
	// 使用 ComCtl32.dll 版本 6 或更高版本来启用可视化方式,
	//则需要 InitCommonControlsEx()。  否则,将无法创建窗口。
	INITCOMMONCONTROLSEX InitCtrls;
	InitCtrls.dwSize = sizeof(InitCtrls);
	// 将它设置为包括所有要在应用程序中使用的
	// 公共控件类。
	InitCtrls.dwICC = ICC_WIN95_CLASSES;
	InitCommonControlsEx(&InitCtrls);

	CWinApp::InitInstance();


	AfxEnableControlContainer();

	// 创建 shell 管理器,以防对话框包含
	// 任何 shell 树视图控件或 shell 列表视图控件。
	CShellManager *pShellManager = new CShellManager;

	// 激活“Windows Native”视觉管理器,以便在 MFC 控件中启用主题
	CMFCVisualManager::SetDefaultManager(RUNTIME_CLASS(CMFCVisualManagerWindows));

	// 标准初始化
	// 如果未使用这些功能并希望减小
	// 最终可执行文件的大小,则应移除下列
	// 不需要的特定初始化例程
	// 更改用于存储设置的注册表项
	// TODO:  应适当修改该字符串,
	// 例如修改为公司或组织名
	SetRegistryKey(_T("应用程序向导生成的本地应用程序"));

	CmaterialDlg dlg;
	m_pMainWnd = &dlg;
	INT_PTR nResponse = dlg.DoModal();
	if (nResponse == IDOK)
	{
		// TODO:  在此放置处理何时用
		//  “确定”来关闭对话框的代码
	}
	else if (nResponse == IDCANCEL)
	{
		// TODO:  在此放置处理何时用
		//  “取消”来关闭对话框的代码
	}
	else if (nResponse == -1)
	{
		TRACE(traceAppMsg, 0, "警告: 对话框创建失败,应用程序将意外终止。\n");
		TRACE(traceAppMsg, 0, "警告: 如果您在对话框上使用 MFC 控件,则无法 #define _AFX_NO_MFC_CONTROLS_IN_DIALOGS。\n");
	}

	// 删除上面创建的 shell 管理器。
	if (pShellManager != NULL)
	{
		delete pShellManager;
	}

	// 由于对话框已关闭,所以将返回 FALSE 以便退出应用程序,
	//  而不是启动应用程序的消息泵。
	return FALSE;
}





数据库管理系统MFC实现

标签:

原文地址:http://blog.csdn.net/qq_31558353/article/details/51689500

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!