www.pudn.com > 6433624505.rar > Alltable.cpp
// Alltable.cpp : implementation file
//
#include "stdafx.h"
#include "Browser.h"
#include "Alltable.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CAlltable dialog
CAlltable::CAlltable(CWnd* pParent /*=NULL*/)
: CDialog(CAlltable::IDD, pParent)
{
//{{AFX_DATA_INIT(CAlltable)
m_AllEdit = _T("");
//}}AFX_DATA_INIT
}
CAlltable::~CAlltable()
{
}
void CAlltable::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAlltable)
DDX_Control(pDX, IDC_REFRESH, m_Refresh);
DDX_Control(pDX, IDC_LOOKIT, m_Lookit);
DDX_Control(pDX, IDC_DELETETABLE, m_Delete);
DDX_Control(pDX, IDCANCEL, m_Close);
DDX_Control(pDX, IDC_ALLLIST, m_List);
DDX_Text(pDX, IDC_ALLEDIT, m_AllEdit);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAlltable, CDialog)
//{{AFX_MSG_MAP(CAlltable)
ON_NOTIFY(NM_DBLCLK, IDC_ALLLIST, OnDblclkAlllist)
ON_BN_CLICKED(IDC_LOOKIT, OnLookit)
ON_BN_CLICKED(IDC_DELETETABLE, OnDeletetable)
ON_BN_CLICKED(IDC_REFRESH, OnRefresh)
ON_NOTIFY(NM_CLICK, IDC_ALLLIST, OnClickAlllist)
ON_WM_PAINT()
ON_WM_LBUTTONDOWN()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CAlltable message handlers
BOOL CAlltable::OnInitDialog()
{
CDialog::OnInitDialog();
m_bitmapground.LoadBitmap(IDB_SONGROUND);
m_Close.LoadBitmaps(IDB_CLOSEONE,IDB_CLOSETWO);
m_Refresh.LoadBitmaps(IDB_REFRESHONE,IDB_REFRESHTWO);
m_Lookit.LoadBitmaps(IDB_LOOKONE,IDB_LOOKTWO);
m_Delete.LoadBitmaps(IDB_DELEONE,IDB_DELETWO);
infor.SubclassDlgItem(IDC_ALLEDIT,this);
infor.SetBackColor(RGB(222,223,223));
m_AllEdit.Empty();
m_List.SetTextColor(RGB (0, 0, 0));
m_List.SetExtendedStyle(LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT);
m_List.InsertColumn(0,_T("表名"),LVCFMT_CENTER,128,100);
m_List.InsertColumn(1,_T("表空间"),LVCFMT_CENTER,100,100);
m_List.InsertColumn(2,_T("用户"),LVCFMT_CENTER,100,100);
m_List.InsertColumn(3,_T("INITIAL_EXTENT"),LVCFMT_CENTER,100,100);
m_List.InsertColumn(4,_T("NEXT_EXTENT"),LVCFMT_CENTER,100,100);
m_List.InsertColumn(5,_T("MIN_EXTENTS"),LVCFMT_CENTER,100,100);
m_List.InsertColumn(6,_T("MAX_EXTENTS"),LVCFMT_CENTER,100,100);
OnRefresh();
return TRUE;
}
void CAlltable::OnRefresh()
{
m_List.DeleteAllItems();
tablename.clear();
CString _sql;
tbin tbinfor;
if(select == 0)
{
SetWindowText("所有表");
_sql = "select table_name,tablespace_name,user,INITIAL_EXTENT,NEXT_EXTENT,MIN_EXTENTS,MAX_EXTENTS from user_tables";
}
if(select == 1)
{
SetWindowText("表空间信息 ---- "+tablespace);
_sql.Format("select table_name,tablespace_name,owner,INITIAL_EXTENT,NEXT_EXTENT,MIN_EXTENTS,MAX_EXTENTS from dba_tables where tablespace_name = \'%s\'",tablespace);
}
_bstr_t sql = _sql;
try
{
pRst = pConn->Execute(sql,NULL,adCmdText);
while(!pRst->End)
{
_variant_t vTableName = pRst->Fields->GetItem(long(0))->Value;
_variant_t vTableSpace = pRst->Fields->GetItem(long(1))->Value;
_variant_t vTableUser = pRst->Fields->GetItem(long(2))->Value;
_variant_t vInitExtent = pRst->Fields->GetItem(long(3))->Value;
_variant_t vNextExtent = pRst->Fields->GetItem(long(4))->Value;
_variant_t vMinExtent = pRst->Fields->GetItem(long(5))->Value;
_variant_t vMaxExtent = pRst->Fields->GetItem(long(6))->Value;
tbinfor.tablename = (char *)_bstr_t(vTableName);
if(vTableSpace.vt == VT_NULL)
tbinfor.tablespacename = "NULL";
else
tbinfor.tablespacename = (char *)_bstr_t(vTableSpace);
tbinfor.tableuser = (char *)_bstr_t(vTableUser);
if(vInitExtent.vt == VT_NULL)
tbinfor.initextent = "NULL";
else
tbinfor.initextent = (char *)_bstr_t(vInitExtent);
if(vNextExtent.vt == VT_NULL)
tbinfor.nextextent = "NULL";
else
tbinfor.nextextent = (char *)_bstr_t(vNextExtent);
if(vMinExtent.vt == VT_NULL)
tbinfor.minextent = "NULL";
else
tbinfor.minextent = (char *)_bstr_t(vMinExtent);
if(vMaxExtent.vt == VT_NULL)
tbinfor.maxextent = "NULL";
else
tbinfor.maxextent = (char *)_bstr_t(vMaxExtent);
tablename.push_back(tbinfor);
pRst->MoveNext();
}
for(int i = 0;i < tablename.size();i ++)
{
m_List.InsertItem(i,tablename[i].tablename);
m_List.SetItemText(i,1,tablename[i].tablespacename);
m_List.SetItemText(i,2,tablename[i].tableuser);
m_List.SetItemText(i,3,tablename[i].initextent);
m_List.SetItemText(i,4,tablename[i].nextextent);
m_List.SetItemText(i,5,tablename[i].minextent);
m_List.SetItemText(i,6,tablename[i].maxextent);
}
pRst->Close();
pRst.Release();
}
catch(_com_error &e)
{
if(pConn == NULL)
AfxMessageBox("未连接数据库");
else
AfxMessageBox(e.Description());
CDialog::OnOK();
}
}
void CAlltable::OnDblclkAlllist(NMHDR* pNMHDR, LRESULT* pResult)
{
cursel = m_List.GetSelectionMark();
if(cursel >=0)
{
if(select == 0)
{
tableinfor.pConn = pConn;
tableinfor.select = 0;
tableinfor.tablename = tablename[cursel].tablename;
tableinfor.DoModal();
}
if(select ==1)
{
User.MakeUpper();
tablename[cursel].tableuser.MakeUpper();
if(User == tablename[cursel].tableuser)
{
tableinfor.pConn = pConn;
tableinfor.select = 0;
tableinfor.tablename = tablename[cursel].tablename;
tableinfor.DoModal();
}
else
AfxMessageBox(_T("您没有权限查看此表,请连接到: ")+tablename[cursel].tableuser);
}
}
else
AfxMessageBox(_T("未选定表"));
*pResult = 0;
}
void CAlltable::OnLookit()
{
cursel = m_List.GetSelectionMark();
if(cursel >= 0)
{
tableinfor.pConn = pConn;
tableinfor.select = 0;
tableinfor.tablename = tablename[cursel].tablename;
tableinfor.DoModal();
}
else
AfxMessageBox(_T("未选定表"));
}
void CAlltable::OnDeletetable()
{
cursel = m_List.GetSelectionMark();
if(AfxMessageBox("确定删除表 "+tablename[cursel].tablename+" 吗?",1) == IDOK)
{
if(cursel >= 0)
{
CString _sql;
_sql.Format("drop table %s",tablename[cursel].tablename);
_bstr_t sql = _sql;
try
{
pConn->Execute(sql,NULL,adCmdText);
m_List.DeleteItem(cursel);
tablename.erase(tablename.begin()+cursel);
OnRefresh();
}
catch(_com_error &e)
{
AfxMessageBox(e.Description());
}
}
}
}
void CAlltable::OnClickAlllist(NMHDR* pNMHDR, LRESULT* pResult)
{
cursel = m_List.GetSelectionMark();
if(cursel >= 0)
{
m_AllEdit = "表名: " + tablename[cursel].tablename + " ";
m_AllEdit += "表空间: " + tablename[cursel].tablespacename + " ";
m_AllEdit += "用户: " + tablename[cursel].tableuser + " ";
this->UpdateData(false);
}
*pResult = 0;
}
void CAlltable::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);
CDialog::OnPaint();
}
void CAlltable::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);
}