?? dbasedatasql.cpp
字號:
// DBaseDataSql.cpp : implementation file
//
#include "stdafx.h"
#include "SqlCeExaple.h"
#include "DBaseDataSql.h"
#include "vorecordset.h"
#include "DBManager.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CDBaseDataSql dialog
CVOConnection* m_Conn;//數據源對象指針
CDBaseDataSql::CDBaseDataSql(CWnd* pParent /*=NULL*/)
: CDialog(CDBaseDataSql::IDD, pParent)
{
//{{AFX_DATA_INIT(CDBaseDataSql)
m_nNum = 1;
m_sName = _T("");
m_nAge = 0;
//}}AFX_DATA_INIT
}
void CDBaseDataSql::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CDBaseDataSql)
DDX_Control(pDX, IDC_LIST1, m_List);
DDX_Control(pDX, IDC_BTN_MOD, m_btnMod);
DDX_Control(pDX, IDC_BTN_DEL, m_btnDel);
DDX_Control(pDX, IDC_BTN_ADD, m_btnAdd);
DDX_Text(pDX, IDC_EDIT2, m_nNum);
DDX_Text(pDX, IDC_EDIT3, m_sName);
DDX_Text(pDX, IDC_EDIT4, m_nAge);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CDBaseDataSql, CDialog)
//{{AFX_MSG_MAP(CDBaseDataSql)
ON_BN_CLICKED(IDC_BTN_ADD, OnBtnAdd)
ON_BN_CLICKED(IDC_BTN_MOD, OnBtnMod)
ON_BN_CLICKED(IDC_BTN_DEL, OnBtnDel)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CDBaseDataSql message handlers
BOOL CDBaseDataSql::OnInitDialog()
{
CDialog::OnInitDialog();
// RegDll();
HRESULT hr = S_OK;
m_Conn = new CVOConnection();
m_pRecordSet = new CVORecordset(*m_Conn);
db.m_pRecordSet = m_pRecordSet;
CString sql = L"select * from student";
hr = db.m_pRecordSet->Open(sql);
InitList();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CDBaseDataSql::InitList()
{
m_ImageList.Create(16,16,ILC_COLOR,2,2);
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_ICON1));
m_List.SetImageList(&m_ImageList,LVSIL_SMALL);
m_font.CreateFont(12,0,0,0,FW_NORMAL, 0,0,0,
DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, CLIP_CHARACTER_PRECIS,
DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, L"宋體");
m_List.SetFont(&m_font);
m_List.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
m_List.InsertColumn(0,_T("序列號"));
m_List.InsertColumn(1,_T("姓名"));
m_List.InsertColumn(2,_T("年齡"));
m_List.SetColumnWidth(0,60);
m_List.SetColumnWidth(1,80);
m_List.SetColumnWidth(2,40);
m_font.DeleteObject();
m_ImageList.DeleteImageList();
FillList();
}
void CDBaseDataSql::FillList()
{
m_List.DeleteAllItems();
CVORecordset m_pRecordSet(*m_Conn);
DBManager db;
db.m_pRecordSet = &m_pRecordSet;
CString sql = _T("select * from student");
db.m_pRecordSet->Open(sql);
db.FindFirstItem();
// m_List.InsertItem(0,0);
// CString temp;
// temp.Format(L"%d",db.dbnum);
// m_List.SetItemText(0,0,temp);
// temp.Format(L"%d",db.dbage);
// m_List.SetItemText(0,2,temp);
// m_List.SetItemText(0,1,db.dbname);
int nRow=0;
while(!db.m_pRecordSet->IsEOF())
{
m_List.InsertItem(nRow,0);
CString temp;
temp.Format(L"%d",db.dbnum);
m_List.SetItemText(nRow,0,temp);
temp.Format(L"%d",db.dbage);
m_List.SetItemText(nRow,2,temp);
m_List.SetItemText(nRow,1,db.dbname);
db.FindNextItem();
nRow++;
}
}
void CDBaseDataSql::OnBtnAdd()
{
// TODO: Add your control notification handler code here
CVORecordset m_pRecordSet(*m_Conn);
DBManager db;
db.m_pRecordSet = &m_pRecordSet;
CString sql = _T("select * from student");
db.m_pRecordSet->Open(sql);
UpdateData();
if (m_nNum <= 0)
{
MessageBox(L"input a Number",L"提示",MB_OK);
return;
}
if (m_sName == L"")
{
MessageBox(L"input student name",L"提示",MB_OK);
return;
}
db.Add(m_nNum,m_sName,m_nAge);
CString temp;
int pos = m_List.GetItemCount();
m_List.InsertItem(pos,0);
temp.Format(L"%d",m_nNum);
m_List.SetItemText(pos,0,temp);
m_List.SetItemText(pos,1,m_sName);
temp.Format(L"%d",m_nAge);
m_List.SetItemText(pos,2,temp);
m_List.SetSelectionMark(pos);
OrderList();
UpdateData(FALSE);
}
void CDBaseDataSql::OnBtnMod()
{
// TODO: Add your control notification handler code here
UpdateData();
DBManager db;
db.Mod(m_nNum,m_sName,m_nAge);
UpdateData(FALSE);
}
void CDBaseDataSql::OnBtnDel()
{
// TODO: Add your control notification handler code here
UpdateData();
int nSel;
CVORecordset m_pRecordSet(*m_Conn);
DBManager db;
db.m_pRecordSet = &m_pRecordSet;
CString sql = L"select * from student";
if(m_List.GetSelectionMark() < 0)
{
MessageBox(L"請選擇一個要刪除的項!",L"系統提示",MB_ICONASTERISK);
return;
}
nSel = m_List.GetSelectionMark();
db.m_pRecordSet->Open(sql);
db.Del(_wtoi(m_List.GetItemText(nSel,0)));
m_List.DeleteAllItems();
FillList();
OrderList();
}
void CDBaseDataSql::OnCancel()
{
// TODO: Add extra cleanup here
if(m_Conn)
{
delete m_Conn;
}
CDialog::OnCancel();
}
void CDBaseDataSql::OrderList()
{
int i,j;
int total=m_List.GetItemCount();
for(i=0;i<total;i++)
{
bool bIfChanged=false;
int min=_wtoi(m_List.GetItemText(i,0));
int minRow=i;
for(j=i+1;j<total;j++)
{
if(_wtoi(m_List.GetItemText(j,0))<min)
{
min=_wtoi(m_List.GetItemText(j,0));
minRow=j;
bIfChanged=true;
}
}
if(!bIfChanged)
continue;
m_List.InsertItem(i,0);
m_List.SetItemText(i,0,m_List.GetItemText(minRow+1,0));
m_List.SetItemText(i,1,m_List.GetItemText(minRow+1,1));
m_List.SetItemText(i,2,m_List.GetItemText(minRow+1,2));
m_List.DeleteItem(minRow+1);
}
}
BOOL CDBaseDataSql::RegisterOCX(CString pszDllName)
{
HINSTANCE hLib = LoadLibrary(pszDllName);
if (hLib < (HINSTANCE)32)
{
return FALSE;
}
// HRESULT hResult = OleInitialize(NULL);
// if(hResult != S_OK)
// {
// ::FreeLibrary(hLib);
// return FALSE;
// }
FARPROC lpDllEntryPoint;
lpDllEntryPoint = GetProcAddress(hLib,_T("DllRegisterServer"));
if(lpDllEntryPoint!=NULL)
{
if(FAILED((*lpDllEntryPoint)()))
{
FreeLibrary(hLib);
return FALSE;
};
}
else
{
return FALSE;
}
return TRUE;
}
void CDBaseDataSql::RegDll()
{
CString pathSrc[13],pathDes[13];
pathSrc[0] = L"\\Storage Card\\dll\\adoce31.dll";
pathSrc[1] = L"\\Storage Card\\dll\\adoxce31.dll";
pathSrc[2] = L"\\Storage Card\\dll\\msdaer.dll";
pathSrc[3] = L"\\Storage Card\\dll\\msdaosp.dll";
pathSrc[4] = L"\\Storage Card\\dll\\ssce20.dll";
pathSrc[5] = L"\\Storage Card\\dll\\ssceca20.dll";
pathSrc[6] = L"\\Storage Card\\dll\\ssceerror20en.dll";
pathSrc[7] = L"\\Storage Card\\dll\\msdaeren.dll";
pathSrc[8] = L"\\Storage Card\\dll\\msdaeres.dll";
pathSrc[9] = L"\\Storage Card\\dll\\msdaerde.dll";
pathSrc[10] = L"\\Storage Card\\dll\\adocedb31.dll";
pathSrc[11] = L"\\Storage Card\\dll\\adoceoledb31.dll";
pathSrc[12] = L"\\Storage Card\\DataBase\\student.sdf";
pathDes[0] = L"\\Windows\\adoce31.dll";
pathDes[1] = L"\\Windows\\adoxce31.dll";
pathDes[2] = L"\\Windows\\msdaer.dll";
pathDes[3] = L"\\Windows\\msdaosp.dll";
pathDes[4] = L"\\Windows\\ssce20.dll";
pathDes[5] = L"\\Windows\\ssceca20.dll";
pathDes[6] = L"\\Windows\\ssceerror20en.dll";
pathDes[7] = L"\\Windows\\msdaeren.dll";
pathDes[8] = L"\\Windows\\msdaeres.dll";
pathDes[9] = L"\\Windows\\msdaerde.dll";
pathDes[10] = L"\\Windows\\adocedb31.dll";
pathDes[11] = L"\\Windows\\adoceoledb31.dll";
pathDes[12] = L"\\My Documents\\student.sdf";
BOOL bReturn = TRUE;
int i = 0;
try
{
// int i; //考貝文件
for( i = 0; i < 12; i++)
{
bReturn = bReturn&&::CopyFile(pathSrc[i], pathDes[i], FALSE);
}
CopyFile(pathSrc[12],pathDes[12],TRUE);
}
catch(...)
{
bReturn=FALSE;
}
if(bReturn)
{
// MessageBox(L"文件拷貝成功!",L"系統提示!",MB_OK);
int i;
BOOL aa =0; //注冊文件
for( i = 0; i < 6; i++)
{
aa = RegisterOCX(pathDes[i]);
}
}
else
{
MessageBox(L"文件拷貝失敗!",L"系統提示!",MB_OK);
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -