亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? dbtooldlg.cpp

?? 很好的程序,希望能給你們帶來方便.大家一起來維護這個網站,使其發展的更旺
?? CPP
字號:
// DBToolDlg.cpp : implementation file
//

#include "stdafx.h"
#include "DBTool.h"
#include "DBToolLogin.h"
#include "About.h"
#include "DBToolSQL.h"
#include "DBToolDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CDBToolDlg dialog

CDBToolDlg::CDBToolDlg(CWnd* pParent /*=NULL*/)
	: CResizableDialog(CDBToolDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CDBToolDlg)
	//}}AFX_DATA_INIT
	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
	cn=NULL;
	rs=NULL;
	m_pSQL=NULL;
}

void CDBToolDlg::DoDataExchange(CDataExchange* pDX)
{
	CResizableDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDBToolDlg)
	DDX_Control(pDX, IDC_TREE_DB, m_treDb);
	DDX_Control(pDX, IDC_MSFLEXGRID_DB, m_grdDb);
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CDBToolDlg, CResizableDialog)
	//{{AFX_MSG_MAP(CDBToolDlg)
	ON_NOTIFY(NM_CLICK, IDC_TREE_DB, OnClickTreeDb)
	ON_NOTIFY(TVN_SELCHANGED, IDC_TREE_DB, OnSelchangedTreeDb)
	ON_WM_CLOSE()
	ON_WM_SIZE()
	ON_COMMAND(ID_MENU_ODBC, OnMenuOdbc)
	ON_COMMAND(ID_MENU_EXIT, OnMenuExit)
	ON_COMMAND(ID_MENU_ABOUT, OnMenuAbout)
	ON_COMMAND(ID_MENU_REFRESHALL, OnMenuRefreshall)
	ON_COMMAND(ID_MENU_SQL, OnMenuSql)
	ON_WM_CREATE()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

static UINT indicators[] =
{
	ID_SEPARATOR,
	ID_SEPARATOR,
};
/////////////////////////////////////////////////////////////////////////////
// CDBToolDlg message handlers

BOOL CDBToolDlg::OnInitDialog()
{
	CResizableDialog::OnInitDialog();

	SetIcon(m_hIcon, TRUE);
	SetIcon(m_hIcon, FALSE);

	if(!m_wndToolBar.CreateEx(this,TBSTYLE_FLAT,TBSTYLE_FLAT | WS_CHILD | WS_VISIBLE | CBRS_TOP
		| CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
	   !m_wndToolBar.LoadToolBar(IDR_TOOLBAR))
	{
		AfxMessageBox("創建工具欄失敗!");
		return -1;
	}
	else RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);

	AddAnchor(IDC_TREE_DB,TOP_LEFT,BOTTOM_LEFT);
	AddAnchor(m_grdDb.GetSafeHwnd(),TOP_LEFT,BOTTOM_RIGHT);
	ShowSizeGrip(TRUE);

	m_imgLst.Create(16,16,TRUE,5,0);
	m_hIcon=AfxGetApp()->LoadIcon(IDI_ICON_DBTOOL);
	m_imgLst.Add(m_hIcon);
	m_hIcon=AfxGetApp()->LoadIcon(IDI_ICON_ODBC);
	m_imgLst.Add(m_hIcon);
	m_hIcon=AfxGetApp()->LoadIcon(IDI_ICON_TABLEOPEN);
	m_imgLst.Add(m_hIcon);
	m_hIcon=AfxGetApp()->LoadIcon(IDI_ICON_TABLECLOSE);
	m_imgLst.Add(m_hIcon);
	m_hIcon=AfxGetApp()->LoadIcon(IDI_ICON_TABLE);
	m_imgLst.Add(m_hIcon);
	m_hIcon=AfxGetApp()->LoadIcon(IDI_ICON_COLUMN);
	m_imgLst.Add(m_hIcon);
	m_treDb.SetImageList(&m_imgLst,LVSIL_NORMAL);

	if(GetDsn()==FALSE) AfxMessageBox("取得數據源失敗!");

	HRESULT ht;
	ht=CoInitialize(NULL);//初始化COM對象
	if(!SUCCEEDED(ht))
	{
		AfxMessageBox("初始化數據連接失敗!");
		return FALSE;
	}

	cn=new _ConnectionPtr;
	ht=cn->CreateInstance("ADODB.Connection");
	if(!SUCCEEDED(ht))
	{
		AfxMessageBox("創建數據連接失敗!");
		delete cn;
		cn=NULL;
		return FALSE;
	}

	rs=new _RecordsetPtr;
	ht=rs->CreateInstance("ADODB.Recordset");
	if(!SUCCEEDED(ht))
	{
		AfxMessageBox("創建記錄集對象失敗!");
		delete rs;
		rs=NULL;
	}

	m_grdDb.SetRows(1);
	m_grdDb.SetCol(1);
	m_grdDb.SetTextMatrix(0,0,"ID");

	return TRUE;
}

BOOL CDBToolDlg::GetDsn()
{
	long i=SQL_SUCCESS;
	HENV hEnv;
    char szDSN[30];
	SWORD cbDSN;
	UCHAR szDescription[300];
	SWORD cbDescription;
	HTREEITEM parent1,parent2,parent3;

	m_treDb.DeleteAllItems();
	parent1=m_treDb.InsertItem("DBTool",0,0);
	parent2=m_treDb.InsertItem("數據源",3,2,parent1);

	if (SQLAllocEnv(&hEnv)==SQL_SUCCESS)
	{
		while(i==SQL_SUCCESS)
		{
			i=SQLDataSources(hEnv,SQL_FETCH_NEXT,
				    (UCHAR FAR *) &szDSN, 30, &cbDSN,
                    (UCHAR FAR *) &szDescription,300,
                     &cbDescription);
			{
				parent3=m_treDb.InsertItem(szDSN,1,1,parent2);
				m_treDb.InsertItem("表名稱",3,2,parent3);
			}
		}
		m_treDb.DeleteItem(parent3);
		SQLFreeEnv(hEnv);
	}
	else return FALSE;

	m_treDb.Expand(parent1,TVE_EXPAND);
	m_treDb.Expand(parent2,TVE_EXPAND);

	return TRUE;
}

void CDBToolDlg::OnClickTreeDb(NMHDR* pNMHDR, LRESULT* pResult) 
{
	*pResult = 0;
}

void CDBToolDlg::OnSelchangedTreeDb(NMHDR* pNMHDR, LRESULT* pResult) 
{
	NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;

	HTREEITEM tmpItem=m_treDb.GetSelectedItem(),tmpItems;
	CString strTemp,tmp;
	_variant_t value;
	HRESULT ht;

	try
	{
		if(m_treDb.GetItemText(tmpItem)=="表名稱")
		{//取表名稱
			if(!m_treDb.ItemHasChildren(tmpItem))
			{
				CDBToolLogin dlg(this);
				if(dlg.DoModal()==IDCANCEL)	return;

				tmpItems=m_treDb.GetParentItem(tmpItem);
				tmp=m_treDb.GetItemText(tmpItems);
				strTemp = "DSN=" + tmp;

				CWaitCursor cursor;
				m_wndStatusBar.SetPaneText(1,"正在連接數據源,請等待...");

				if((*cn)->State==adStateOpen) (*cn)->Close();
				ht=(*cn)->Open(strTemp.AllocSysString(),m_strUid.AllocSysString(),m_strPwd.AllocSysString(),0);
				m_strDsn=tmp;
				if(!SUCCEEDED(ht))
				{
					AfxMessageBox("發生錯誤,連接數據庫失敗!");
					m_strPwd="";m_strUid="";
					return;
				}

				(*rs)=((*cn)->OpenSchema(adSchemaTables));

				while(!(*rs)->adoEof)
				{
					value=(*rs)->GetCollect("TABLE_TYPE");
					strTemp=(char*)_bstr_t(value);

					if(strTemp=="TABLE")
					{
						value=(*rs)->GetCollect("TABLE_NAME");
						strTemp=(char*)_bstr_t(value);
						strTemp.TrimRight();

						m_treDb.InsertItem(strTemp,4,4,tmpItem);
					}

					(*rs)->MoveNext();
				}

				tmpItem=m_treDb.GetChildItem(tmpItem);
				tmpItems=tmpItem;
				(*rs)=(*cn)->OpenSchema(adSchemaColumns);
				while(!(*rs)->adoEof)
				{
					value=(*rs)->GetCollect("TABLE_NAME");
					tmp=(char*)_bstr_t(value);

					tmpItem=tmpItems;
					while(tmpItem)
					{
						strTemp=m_treDb.GetItemText(tmpItem);
						if(tmp==strTemp)
						{
							value=(*rs)->GetCollect("COLUMN_NAME");
							tmp=(char*)_bstr_t(value);
							tmp.TrimLeft();
							m_treDb.InsertItem(tmp,5,5,tmpItem);
						}

						tmpItem=m_treDb.GetNextItem(tmpItem,1);
					}
					(*rs)->MoveNext();
				}

				tmpItem=m_treDb.GetSelectedItem();
				m_treDb.Expand(tmpItem,TVE_EXPAND);
				m_wndStatusBar.SetPaneText(1,"");
			}
		}
		else
		{//取列名稱
			m_grdDb.SetRedraw(FALSE);
			tmpItem=m_treDb.GetParentItem(tmpItem);
			tmpItems=m_treDb.GetParentItem(tmpItem);
			if(m_treDb.GetItemText(tmpItem)=="表名稱")
			{
				long m_Fields=2;

				tmpItem=m_treDb.GetSelectedItem();
				tmpItem=m_treDb.GetChildItem(tmpItem);
				m_grdDb.SetRows(1);
				while(tmpItem)
				{
					m_grdDb.SetCols(m_Fields);
					m_grdDb.SetTextMatrix(0,m_Fields-1,m_treDb.GetItemText(tmpItem));
					tmpItem=m_treDb.GetNextSiblingItem(tmpItem);

					m_Fields++;
				}
				if(((CButton*)GetDlgItem(IDC_CHECK_VIEW))->GetCheck()==1)
				{
					tmpItem=m_treDb.GetSelectedItem();
					tmp=m_treDb.GetItemText(tmpItems);

					if(tmp!=m_strDsn)
					{
						CDBToolLogin dlg(this);
						if(dlg.DoModal()==IDCANCEL)	return;

						strTemp = "DSN=" + tmp;

						if((*cn)->State==adStateOpen) (*cn)->Close();
						ht=(*cn)->Open(strTemp.AllocSysString(),m_strUid.AllocSysString(),m_strPwd.AllocSysString(),0);
						m_strDsn=tmp;
						if(!SUCCEEDED(ht))
						{
							AfxMessageBox("發生錯誤,連接數據庫失敗!");
							m_strPwd="";m_strUid="";
							return;
						}
					}
					CWaitCursor cursor;
					m_wndStatusBar.SetPaneText(1,"正在讀取數據,請等待...");
					tmp="select * from " + m_treDb.GetItemText(tmpItem);

					if((*rs)->State==adStateOpen) (*rs)->Close();
					(*rs)->Open(tmp.AllocSysString(),(IDispatch*)(*cn),adOpenDynamic,adLockOptimistic,adCmdText);

					m_Fields=2;
					long i=1;

					while(!(*rs)->adoEof)
					{
						strTemp="";
						tmp.Format("%d",m_Fields-1);
						strTemp=strTemp + tmp + "\t";

						for(i=1;i<m_grdDb.GetCols();i++)
						{
							value=(*rs)->GetCollect((_variant_t)(m_grdDb.GetTextMatrix(0,i)));
							tmp=(value.vt!=VT_NULL) ? (char*)(_bstr_t)value : "";
							strTemp=strTemp + tmp + "\t";
						}

						i=m_Fields-1;
						value=i;
						m_grdDb.AddItem(strTemp,value);
						m_Fields++;
						(*rs)->MoveNext();
					}
				}
			}
			m_grdDb.SetRedraw(TRUE);
			m_wndStatusBar.SetPaneText(1,"");
		}
	}
	catch(_com_error e)
	{
		m_grdDb.SetRedraw(TRUE);
		m_wndStatusBar.SetPaneText(1,"");
		AfxMessageBox(e.ErrorMessage());
	}
	catch(...)
	{
		m_wndStatusBar.SetPaneText(1,"");
		m_grdDb.SetRedraw(TRUE);
	}

	*pResult = 0;
}

_ConnectionPtr* CDBToolDlg::GetConnection()
{
	return cn;
}

void CDBToolDlg::OnClose() 
{
	if(m_pSQL)
	{
		if(!m_pSQL->GetSave())
		{
			int rtn=AfxMessageBox("數據已經更改,保存否?",MB_ICONQUESTION|MB_YESNOCANCEL);

			if(rtn==IDYES)
			{
				if(!m_pSQL->SaveFile()) return;
			}
			else
			{
				if(rtn==IDCANCEL)
				{
					return;
				}
			}
		}
	}
	try
	{
		::CoUninitialize();//釋放COM對象
		if((*cn)->State==adStateOpen) (*cn)->Close();
		if((*rs)->State==adStateOpen) (*rs)->Close();
		delete cn;
		delete rs;
		cn=NULL;
		rs=NULL;
	}
	catch(_com_error e)
	{
		delete cn;
		delete rs;
		cn=NULL;
		rs=NULL;
		AfxMessageBox(e.ErrorMessage());
	}

	CResizableDialog::OnClose();
}

void CDBToolDlg::OnSize(UINT nType, int cx, int cy) 
{
	CResizableDialog::OnSize(nType, cx, cy);

	RepositionBars(AFX_IDW_CONTROLBAR_FIRST,AFX_IDW_CONTROLBAR_LAST,0);
}

void CDBToolDlg::SetUidPwd(CString Uid,CString Pwd)
{
	m_strUid=Uid;
	m_strPwd=Pwd;
}

void CDBToolDlg::OnMenuOdbc() 
{
	WinExec("odbcad32.exe",SW_SHOWNORMAL);
}

BOOL CDBToolDlg::PreTranslateMessage(MSG* pMsg) 
{
	if((pMsg->wParam==VK_RETURN && GetKeyState(VK_RETURN)<0) ||(pMsg->wParam==VK_ESCAPE &&GetKeyState(VK_ESCAPE)<0)) return FALSE;
	if(pMsg->wParam==VK_F5 && GetKeyState(VK_F5)<0) OnMenuRefreshall();

	return CResizableDialog::PreTranslateMessage(pMsg);
}

void CDBToolDlg::OnMenuExit() 
{
	PostMessage(WM_CLOSE);
}

void CDBToolDlg::OnMenuAbout() 
{
	About dlg;
	dlg.DoModal();
}

void CDBToolDlg::OnMenuRefreshall() 
{
	GetDsn();
}

void CDBToolDlg::OnMenuSql() 
{
	if(m_pSQL==NULL)
	{
		m_pSQL=new DBToolSQL(this);
		if(m_pSQL->Create()==FALSE)
		{
			delete m_pSQL;
			m_pSQL=NULL;
			AfxMessageBox("創建SQL窗口失敗!");
		}
	}
	else m_pSQL->SetActiveWindow();
}

void CDBToolDlg::BoxDone()
{
	delete m_pSQL;
	m_pSQL=NULL;
}

int CDBToolDlg::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
	if (CResizableDialog::OnCreate(lpCreateStruct) == -1)
		return -1;

	if (!m_wndStatusBar.Create(this) ||
		!m_wndStatusBar.SetIndicators(indicators,
		  sizeof(indicators)/sizeof(UINT)))
	{
		AfxMessageBox("創建狀態欄失敗!");
		return -1;
	}

	//m_wndStatusBar.SetPaneInfo(1,ID_SEPARATOR,WS_CHILD | WS_VISIBLE | CBRS_BOTTOM,300);

	return 0;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色婷婷综合久久久久中文| 欧美大白屁股肥臀xxxxxx| 精品视频色一区| 久久久激情视频| 日本亚洲电影天堂| 99精品久久免费看蜜臀剧情介绍| 欧美精品v国产精品v日韩精品| 国产精品美女视频| 美女免费视频一区| 欧美体内she精高潮| 欧美激情一区二区| 麻豆91精品91久久久的内涵| 在线免费亚洲电影| 中文字幕一区二区不卡| 国产真实精品久久二三区| 欧美老年两性高潮| 亚洲精品精品亚洲| 91一区一区三区| 亚洲视频在线一区观看| 国产乱码一区二区三区| 精品裸体舞一区二区三区| 视频在线在亚洲| 欧美精品视频www在线观看| 亚洲六月丁香色婷婷综合久久 | 亚洲一区成人在线| 91麻豆swag| 亚洲欧美一区二区久久| 成人黄色小视频在线观看| 久久精品一区蜜桃臀影院| 国产一区二区三区四区五区入口| 欧美丰满美乳xxx高潮www| 亚洲成a人v欧美综合天堂| 在线一区二区视频| 五月综合激情婷婷六月色窝| 欧美在线免费观看视频| 天天av天天翘天天综合网| 一本久久精品一区二区| 亚洲欧洲另类国产综合| 91免费观看视频在线| 有坂深雪av一区二区精品| 日本电影亚洲天堂一区| 天天综合天天做天天综合| 欧美高清性hdvideosex| 日本中文一区二区三区| 精品久久久久久久一区二区蜜臀| 韩国视频一区二区| 中文字幕日韩av资源站| 欧洲亚洲精品在线| 日韩vs国产vs欧美| 精品日韩在线观看| 成人一二三区视频| 一级精品视频在线观看宜春院| 欧美三级电影在线观看| 美腿丝袜亚洲色图| 国产亚洲一二三区| 91麻豆国产在线观看| 日韩精品一二三四| 久久美女高清视频| 在线观看一区二区精品视频| 国产精品99久久久久久宅男| 国产精品国产三级国产普通话蜜臀 | 欧美一区二区三区男人的天堂| 免费在线看一区| 国产欧美日韩中文久久| 在线视频观看一区| 国产乱码一区二区三区| 一区二区三区成人| 久久久久免费观看| 欧美在线制服丝袜| 国产精品正在播放| 天堂久久久久va久久久久| 久久精品日韩一区二区三区| 欧美亚洲一区三区| 国产麻豆日韩欧美久久| 亚洲成精国产精品女| 国产日韩欧美精品电影三级在线| 色爱区综合激月婷婷| 精品亚洲欧美一区| 亚洲一区二区在线观看视频| 久久午夜羞羞影院免费观看| 欧美日韩免费观看一区二区三区| 国产一区二区三区香蕉| 日韩激情在线观看| 亚洲精品福利视频网站| 国产欧美一区二区在线| 91精品国产综合久久精品性色| caoporn国产精品| 韩国精品一区二区| 日产精品久久久久久久性色| 又紧又大又爽精品一区二区| 欧美国产一区二区| 精品电影一区二区三区| 制服丝袜av成人在线看| 在线影院国内精品| 91丨九色丨黑人外教| 国产盗摄视频一区二区三区| 久久精品av麻豆的观看方式| 亚洲成人综合在线| 一个色妞综合视频在线观看| 国产精品嫩草99a| 国产欧美一二三区| 久久精品一区二区三区不卡牛牛| 精品日韩一区二区三区 | 日韩国产在线一| 亚洲激情网站免费观看| 亚洲欧美怡红院| 国产精品亲子乱子伦xxxx裸| 国产日韩欧美电影| 久久久久青草大香线综合精品| 欧美精品一区二区蜜臀亚洲| 日韩欧美的一区| 日韩一区二区在线看| 在线不卡a资源高清| 欧美日韩夫妻久久| 制服丝袜亚洲色图| 欧美一区二区三区爱爱| 日韩欧美的一区| 久久久久久久国产精品影院| 久久精品一级爱片| 国产拍欧美日韩视频二区| 国产精品理论片在线观看| 国产精品欧美一区喷水| 亚洲欧美另类久久久精品2019| 亚洲人一二三区| 亚洲在线视频免费观看| 亚洲成人资源网| 毛片av中文字幕一区二区| 捆绑调教一区二区三区| 国产精品一区免费视频| 99久久精品久久久久久清纯| 99re亚洲国产精品| 欧美体内she精高潮| 91精品国产综合久久久久| 久久综合精品国产一区二区三区| 久久久九九九九| 亚洲人成精品久久久久| 一区二区欧美精品| 日本人妖一区二区| 国产一区999| 色综合久久久久久久久久久| 欧美另类videos死尸| 国产午夜亚洲精品理论片色戒 | 精品久久人人做人人爰| 国产精品免费视频网站| 图片区日韩欧美亚洲| 国产福利电影一区二区三区| 99re视频精品| 日韩美女天天操| 亚洲欧洲国产日本综合| 日日夜夜免费精品| 国产伦精品一区二区三区免费| 成人av网站在线观看免费| 精品视频一区二区三区免费| 亚洲欧美视频在线观看视频| 亚洲第一主播视频| 国产99久久久久| 在线播放日韩导航| 国产精品成人在线观看| 日韩福利电影在线观看| 91色九色蝌蚪| 精品国产乱码久久久久久1区2区| 亚洲免费观看在线视频| 国产伦精品一区二区三区视频青涩 | 日韩一区二区三区四区五区六区| 国产精品久久久久久久久久久免费看 | 亚洲小说春色综合另类电影| 国产一区二区0| 欧美性xxxxx极品少妇| 国产精品丝袜91| 久草精品在线观看| 欧美亚洲动漫精品| 一区二区三区免费看视频| 精品一区二区三区不卡| 欧美色爱综合网| 亚洲私人黄色宅男| 国产伦精品一区二区三区在线观看 | 26uuu亚洲综合色欧美| 亚洲电影欧美电影有声小说| 国产**成人网毛片九色| 日韩欧美国产午夜精品| 午夜欧美2019年伦理| 色综合久久99| 一区在线观看视频| 国产91清纯白嫩初高中在线观看 | 亚洲天堂成人在线观看| 国产乱码精品一区二区三区av| 欧美一区二区视频免费观看| 亚洲一区免费观看| 一本色道久久综合亚洲aⅴ蜜桃| 亚洲精品在线观| 亚洲一二三级电影| 欧美日韩综合色| 亚洲精品国产成人久久av盗摄 | 精品一区二区三区在线播放视频 | 日韩成人伦理电影在线观看| 色综合久久综合网| 伊人一区二区三区| 91性感美女视频| 亚洲激情五月婷婷| 在线观看亚洲一区|