www.pudn.com > 6433624505.rar > CreateTable.cpp
// CreateTable.cpp : implementation file // #include "stdafx.h" #include#include "Browser.h" #include "CreateTable.h" #include "AdTable.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CCreateTable dialog class Table { public: CString colname; CString datatype; int num1; int num2; CString Null; CString Prikey; }; std::vector tables; CCreateTable::CCreateTable(CWnd* pParent /*=NULL*/) : CDialog(CCreateTable::IDD, pParent) { //{{AFX_DATA_INIT(CCreateTable) m_ColName = _T(""); m_TbName = _T(""); m_Null = FALSE; m_Num1 = 1; m_Num2 = 0; m_PriKey = FALSE; m_Style = _T("CHAR"); m_Tablespace = _T(""); //}}AFX_DATA_INIT } void CCreateTable::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CCreateTable) DDX_Control(pDX, IDOK, m_Ok); DDX_Control(pDX, IDCANCEL, m_Cancel); DDX_Control(pDX, IDC_MOVEUP, m_MoveUp); DDX_Control(pDX, IDC_MOVEDOWN, m_MoveDown); DDX_Control(pDX, IDC_DELETE, m_Delete); DDX_Control(pDX, IDC_ADTABLE, m_Adtable); DDX_Control(pDX, IDC_ADDLIST, m_Add); DDX_Control(pDX, ID_CANCEL, m_Close); DDX_Control(pDX, IDC_CREATETABLELIST, m_List); DDX_Text(pDX, IDC_COLUMENAME, m_ColName); DDX_Text(pDX, IDC_CREATETABLENAME, m_TbName); DDX_Check(pDX, IDC_NULL, m_Null); DDX_Text(pDX, IDC_NUM1, m_Num1); DDX_Text(pDX, IDC_NUM2, m_Num2); DDX_Check(pDX, IDC_PRIMARYKEY, m_PriKey); DDX_CBString(pDX, IDC_STYLE, m_Style); DDX_CBString(pDX, IDC_CREATETABLECOM, m_Tablespace); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CCreateTable, CDialog) //{{AFX_MSG_MAP(CCreateTable) ON_BN_CLICKED(IDC_ADTABLE, OnAdtable) ON_BN_CLICKED(IDC_MOVEUP, OnMoveup) ON_BN_CLICKED(IDC_MOVEDOWN, OnMovedown) ON_BN_CLICKED(IDC_DELETE, OnDelete) ON_BN_CLICKED(IDC_ADDLIST, OnAddlist) ON_WM_PAINT() ON_BN_CLICKED(ID_CANCEL, OnCancel) ON_WM_LBUTTONDOWN() //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CCreateTable message handlers BOOL CCreateTable::OnInitDialog() { CDialog::OnInitDialog(); m_bitmapground.LoadBitmap(IDB_SONGROUND); m_Ok.LoadBitmaps(IDB_OKONE,IDB_OKTWO); m_Close.LoadBitmaps(IDB_CLOSEONE,IDB_CLOSETWO); m_Adtable.LoadBitmaps(IDB_ADTABLEONE,IDB_ADTABLETWO); m_MoveUp.LoadBitmaps(IDB_UPONE,IDB_UPTWO); m_MoveDown.LoadBitmaps(IDB_DOWNONE,IDB_DWONTWO); m_Delete.LoadBitmaps(IDB_DELETEONE,IDB_DELETETWO); m_Add.LoadBitmaps(IDB_ADDONE,IDB_ADDTWO); m_Cancel.LoadBitmaps(IDB_CANONE,IDB_CANTWO); count = 0; tables.clear(); initial =-1; next =-1; pit =-1; min =-1; extend = ""; m_List.SetExtendedStyle(LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT); m_List.InsertColumn(0,_T("列名"),LVCFMT_CENTER,100,100); m_List.InsertColumn(1,_T("类型"),LVCFMT_CENTER,80,80); m_List.InsertColumn(2,_T("大小"),LVCFMT_CENTER,60,60); m_List.InsertColumn(3,_T("小数"),LVCFMT_CENTER,60,60); m_List.InsertColumn(4,_T("为空"),LVCFMT_CENTER,70,780); m_List.InsertColumn(5,_T("主键"),LVCFMT_CENTER,70,70); m_ColorBtn1.SubclassDlgItem(IDC_PRIMARYKEY,this); m_ColorBtn1.SetBackColor(RGB(99,103,105)); m_ColorBtn2.SubclassDlgItem(IDC_NULL,this); m_ColorBtn2.SetBackColor(RGB(99,103,105)); return TRUE; } void CCreateTable::OnAdtable() { CAdTable adtable; if(adtable.DoModal() == IDOK) { initial = adtable.m_Initial; next = adtable.m_Next; pit = adtable.m_Pctincrease; min = adtable.m_Minextents; } } void CCreateTable::OnAddlist() { this->UpdateData(true); CString num1,num2,null,key; num1.Format("%d",m_Num1); num2.Format("%d",m_Num2); if(m_Null == TRUE) null = "可为空"; else null = "NOT NULL"; if(m_PriKey == TRUE) key = "PRIMARY KEY"; else key = " "; if(m_ColName != "") { m_List.InsertItem(count,m_ColName); m_List.SetItemText(count,1,m_Style); m_List.SetItemText(count,2,num1); m_List.SetItemText(count,3,num2); m_List.SetItemText(count,4,null); m_List.SetItemText(count,5,key); count ++; Table table; table.colname = m_ColName; table.datatype = m_Style; table.num1 = m_Num1; table.num2 = m_Num2; table.Null = null; table.Prikey = key; tables.push_back(table); m_ColName = ""; m_Null = FALSE; m_PriKey = FALSE; this->UpdateData(false); } else AfxMessageBox(_T("列名不能为空!")); } void CCreateTable::OnMoveup() { cursel = m_List.GetSelectionMark(); if(cursel >0) { Table temporary; temporary = tables[cursel - 1]; tables[cursel-1] =tables[cursel]; tables[cursel] = temporary; m_List.DeleteAllItems(); for(int i = 0;i <= tables.size(); i ++) { CString str1,str2; str1.Format("%d",tables[i].num1); str2.Format("%d",tables[i].num2); m_List.InsertItem(i,tables[i].colname); m_List.SetItemText(i,1,tables[i].datatype); m_List.SetItemText(i,2,str1); m_List.SetItemText(i,3,str2); m_List.SetItemText(i,4,tables[i].Null); m_List.SetItemText(i,5,tables[i].Prikey); } } } void CCreateTable::OnMovedown() { cursel = m_List.GetSelectionMark(); if((cursel < tables.size() - 1)&&(cursel >= 0)) { Table temporary; temporary = tables[cursel + 1]; tables[cursel + 1] = tables[cursel]; tables[cursel] = temporary; m_List.DeleteAllItems(); for(int i = 0;i <= tables.size(); i ++) { CString str1,str2; str1.Format("%d",tables[i].num1); str2.Format("%d",tables[i].num2); m_List.InsertItem(i,tables[i].colname); m_List.SetItemText(i,1,tables[i].datatype); m_List.SetItemText(i,2,str1); m_List.SetItemText(i,3,str2); m_List.SetItemText(i,4,tables[i].Null); m_List.SetItemText(i,5,tables[i].Prikey); } } } void CCreateTable::OnDelete() { cursel = m_List.GetSelectionMark(); if(cursel >= 0) { tables.erase(tables.begin()+cursel); m_List.DeleteItem(cursel); } OnPaint(); } void CCreateTable::OnOK() { this->UpdateData(true); CString str,_sql; if(m_TbName != "") { _sql.Format("Create table %s (",m_TbName); for(int i = 0; i < tables.size();i ++) { if(tables.size() > 1) { if(i == tables.size() - 1) if(tables[i].datatype == "NUMBER") str.Format("%s %s(%d,%d) %s %s",tables[i].colname,tables[i].datatype,tables[i].num1,tables[i].num2, tables[i].Null,tables[i].Prikey); else str.Format("%s %s(%d) %s %s",tables[i].colname,tables[i].datatype,tables[i].num1, tables[i].Null,tables[i].Prikey); else if(tables[i].datatype == "NUMBER") str.Format("%s %s(%d,%d) %s %s,",tables[i].colname,tables[i].datatype,tables[i].num1,tables[i].num2, tables[i].Null,tables[i].Prikey); else str.Format("%s %s(%d) %s %s,",tables[i].colname,tables[i].datatype,tables[i].num1, tables[i].Null,tables[i].Prikey); } else str.Format("%s %s(%d) %s %s",tables[i].colname,tables[i].datatype,tables[i].num1, tables[i].Null,tables[i].Prikey); _sql += str; } str.Format("tablespace %s",m_Tablespace); _sql = _sql + ")" + str; _bstr_t sql = _sql; try { pConn->Execute(sql,NULL,adCmdText); } catch(_com_error &e) { if(pConn == NULL) AfxMessageBox("未连接数据库"); else AfxMessageBox(e.Description()); return; } CDialog::OnOK(); } else AfxMessageBox(_T("表名不能为空")); } void CCreateTable::OnPaint() { CPaintDC dc(this); // device context for painting CRect rect; GetClientRect(&rect); CDC dcMem; dcMem.CreateCompatibleDC(&dc); BITMAP bitMap; m_bitmapground.GetBitmap(&bitMap); CBitmap *pbmpOld=dcMem.SelectObject(&m_bitmapground); dc.StretchBlt(0,0,rect.Width(),rect.Height(),&dcMem,0,0,bitMap.bmWidth,bitMap.bmHeight,SRCCOPY); dc.SetBkColor(RGB(99,103,105)); dc.SetTextColor(RGB(200,200,200)); dc.TextOut(28,385,_T("表信息")); dc.TextOut(65,410,_T("表 名")); dc.TextOut(240,410,_T("表 空 间")); dc.TextOut(24,445,_T("字 段 信 息")); dc.TextOut(65,475,_T("列 名")); dc.TextOut(236,475,_T("数据类型")); dc.TextOut(65,508,_T("大 小")); dc.TextOut(160,508,_T("小 数")); CDialog::OnPaint(); } void CCreateTable::OnCancel() { CDialog::OnCancel(); } void CCreateTable::OnLButtonDown(UINT nFlags, CPoint point) { if(point.x >=5 && point.x <= 65 && point.y >= 2 && point.y <=30) PostMessage(WM_NCLBUTTONDOWN,HTCAPTION,MAKELPARAM(point.x, point.y)); CDialog::OnLButtonDown(nFlags, point); }