diff options
Diffstat (limited to 'VC++Files/mysqlmanager/toolsql.cpp')
-rw-r--r-- | VC++Files/mysqlmanager/toolsql.cpp | 687 |
1 files changed, 0 insertions, 687 deletions
diff --git a/VC++Files/mysqlmanager/toolsql.cpp b/VC++Files/mysqlmanager/toolsql.cpp deleted file mode 100644 index 1773a3a6dc7..00000000000 --- a/VC++Files/mysqlmanager/toolsql.cpp +++ /dev/null @@ -1,687 +0,0 @@ -// ToolSql.cpp : implementation file -// - -#include "stdafx.h" -#include "MySqlManager.h" -#include "ToolSql.h" - -#define WINDOW_COORDS 0 -#define CLIENT_COORDS 1 - -#define MY_TIMER_ID 0x1234 - -#ifdef _DEBUG - #define new DEBUG_NEW - #undef THIS_FILE -static char THIS_FILE[] = __FILE__; -#endif - -///////////////////////////////////////////////////////////////////////////// - -CToolSql::CToolSql(CWnd* pParent,CResource* pServer,CResource* pResource) -: CDialog(CToolSql::IDD, pParent) -, m_pQuery(0) -, m_pResults(0) -, m_pStatus(0) -, m_pServer(pServer) -, m_pResource(pResource) -, m_ui_timer(0) -{ - //{{AFX_DATA_INIT(CToolSql) - m_nIntervalTimerSeconds = 10; - m_bClear = FALSE; - //}}AFX_DATA_INIT - memset ( & m_lf, 0,sizeof(m_lf) ); -} - -///////////////////////////////////////////////////////////////////////////// - -CToolSql::~CToolSql() -{ - - if (m_ui_timer) - { - KillTimer(MY_TIMER_ID); - } - - if (m_pdb) - { - mysql_close(m_pdb); - } - if (m_pQuery) - { - m_pQuery->DestroyWindow(); - delete m_pQuery; - } - if (m_pResults) - { - m_pResults->DestroyWindow(); - delete m_pResults; - } - if (m_pStatus) - { - m_pStatus->DestroyWindow(); - delete m_pStatus; - } -} - -///////////////////////////////////////////////////////////////////////////// - -void CToolSql::DoDataExchange(CDataExchange* pDX) -{ - CDialog::DoDataExchange(pDX); - //{{AFX_DATA_MAP(CToolSql) - DDX_Control(pDX, IDC_STOP_PB, m_ctl_Stop); - DDX_Control(pDX, IDC_START_PB, m_ctl_Start); - DDX_Control(pDX, IDC_SERVER_CB, m_ctl_Server); - DDX_Control(pDX, IDC_TAB1, m_tabs); - DDX_Text(pDX, IDC_TIMER_SECS, m_nIntervalTimerSeconds); - DDV_MinMaxInt(pDX, m_nIntervalTimerSeconds, 1, 120); - DDX_Check(pDX, IDC_CLEAR, m_bClear); - //}}AFX_DATA_MAP -} - - -BEGIN_MESSAGE_MAP(CToolSql, CDialog) -//{{AFX_MSG_MAP(CToolSql) - ON_BN_CLICKED(IDC_QUERY_PB, OnQueryPb) - ON_BN_CLICKED(IDC_DATABASES_PB, OnQueryDatabases) - ON_NOTIFY(TCN_SELCHANGE, IDC_TAB1, OnSelchangeTab1) - ON_BN_CLICKED(IDC_FONT_PB, OnFontPb) - ON_WM_SIZE() - ON_BN_CLICKED(IDC_START_PB, OnStartPb) - ON_BN_CLICKED(IDC_STOP_PB, OnStopPb) - ON_WM_TIMER() - ON_WM_DESTROY() - ON_BN_CLICKED(IDC_CLEAR, OnClear) - ON_COMMAND(IDM_QUERY_EXEC, OnQueryPb) - ON_COMMAND(IDM_QUERY_DATABASES, OnQueryDatabases) - ON_EN_CHANGE(IDC_TIMER_SECS, OnChangeTimerSecs) - //}}AFX_MSG_MAP -END_MESSAGE_MAP() - -///////////////////////////////////////////////////////////////////////////// - -BOOL CToolSql::OnInitDialog() -{ - - CDialog::OnInitDialog(); - - m_ctl_Start . EnableWindow(TRUE); - m_ctl_Stop . EnableWindow(FALSE); - - CString strTitle; - - strTitle.Format ("mySql Query to %s on %s",m_pServer->GetDisplayName(),m_pServer->GetHostName()); - - m_ctl_Server.AddString ( m_pServer->GetDisplayName() ); - m_ctl_Server.SetCurSel (0); - - SetWindowText(strTitle); - - CWaitCursor x; - - m_btn_QueryExec.AutoLoad ( IDC_QUERY_PB, this ); - m_btn_QueryDatabases.AutoLoad ( IDC_DATABASES_PB, this ); - m_btn_Font.AutoLoad ( IDC_FONT_PB, this ); - - m_tabs.GetWindowRect ( m_rectTab[WINDOW_COORDS] ); - GetWindowRect ( m_rectDlg[WINDOW_COORDS] ); - - m_tabs.GetClientRect ( m_rectTab[CLIENT_COORDS] ); - GetClientRect ( m_rectDlg[CLIENT_COORDS] ); - - CMenu* pSysMenu = GetSystemMenu(FALSE); - if (pSysMenu != NULL) - { - CString strText; - strText.LoadString(IDS_QUERY_EXEC); - if (!strText.IsEmpty()) - { - pSysMenu->AppendMenu(MF_SEPARATOR); - pSysMenu->AppendMenu(MF_STRING, IDM_QUERY_EXEC, strText); - } - strText.LoadString(IDS_QUERY_DATABASES); - if (!strText.IsEmpty()) - { - pSysMenu->AppendMenu(MF_STRING, IDM_QUERY_DATABASES, strText); - } - } - - - m_pdb = new MYSQL; - - CString strQuery ( "Query" ); - CString strResults ( "Results" ); - CString strStatus ( "Status" ); - - TC_ITEM tc1 = { TCIF_TEXT, 0,0, (LPSTR)(LPCTSTR)strQuery, strQuery.GetLength(), 0,0}; - TC_ITEM tc2 = { TCIF_TEXT, 0,0, (LPSTR)(LPCTSTR)strResults, strResults.GetLength(), 0,0}; - TC_ITEM tc3 = { TCIF_TEXT, 0,0, (LPSTR)(LPCTSTR)strStatus, strStatus.GetLength(), 0,0}; - - m_tabs.InsertItem ( 0,&tc1 ); - m_tabs.InsertItem ( 1,&tc2 ); - m_tabs.InsertItem ( 2,&tc3 ); - - m_pQuery = new CToolSqlQuery ( NULL ); - m_pResults = new CToolSqlResults ( NULL ); - m_pStatus = new CToolSqlStatus ( NULL ); - - try - { - -// OpenDatabase(); -// -// m_pSelection->SetDatabase ( & m_db ); -// m_pScript->SetDatabase ( & m_db ); -// m_pLog->SetDatabase ( & m_db ); - - m_pQuery -> Create ( (LPCTSTR)IDD_TOOL_SQL_QUERY, &m_tabs ); - m_pResults -> Create ( (LPCTSTR)IDD_TOOL_SQL_RESULTS, &m_tabs ); - m_pStatus -> Create ( (LPCTSTR)IDD_TOOL_SQL_STATUS, &m_tabs ); - - ActivateTab ( 0 ); - - m_pQuery -> SetWindowPos(NULL,20,24,0,0,SWP_NOZORDER|SWP_NOSIZE); - m_pResults -> SetWindowPos(NULL,20,24,0,0,SWP_NOZORDER|SWP_NOSIZE); - m_pStatus -> SetWindowPos(NULL,20,24,0,0,SWP_NOZORDER|SWP_NOSIZE); - - DoOnSize( SIZE_RESTORED, m_rectDlg[CLIENT_COORDS].Width(), m_rectDlg[CLIENT_COORDS].Height() ); - - } - catch (...) - { - } - - mysql_init(m_pdb); - if (!mysql_real_connect(m_pdb,m_pServer->GetHostName(), m_pServer->GetUserName(),m_pServer->GetPassword(),0,m_pServer->GetPortNumber(), NullS,0)) - { -// my_printf_error(0,"connect to server at '%s' failed; error: '%s'", -// MYF(ME_BELL), pResource->GetHostName(), mysql_error(&mysql)); - CString strText; - strText.Format ( "connect to server at '%s' failed; error: '%s'", m_pServer->GetHostName(), mysql_error(m_pdb)); - AfxMessageBox(strText); - EndDialog(IDCANCEL); - return FALSE; - } - - if ( m_pResource && m_pResource->GetType() == CResource::eDatabase ) - { - CString strDB = m_pResource->GetDisplayName(); - strDB.TrimRight(); - if (mysql_select_db(m_pdb,strDB)) - { - } - } - - return FALSE; // return TRUE unless you set the focus to a control - // EXCEPTION: OCX Property Pages should return FALSE -} - -///////////////////////////////////////////////////////////////////////////// - -void CToolSql::ActivateTab ( int tab ) - -{ - switch (tab) - { - case 0: ; - m_pResults-> ShowWindow(SW_HIDE); - m_pStatus-> ShowWindow(SW_HIDE); - m_pQuery-> ShowWindow(SW_SHOW); - m_pQuery->m_ctl_edit.SetFocus(); - break; - case 1: ; - m_pQuery-> ShowWindow(SW_HIDE); - m_pStatus-> ShowWindow(SW_HIDE); - m_pResults-> ShowWindow(SW_SHOW); - m_pResults->m_ctl_edit.SetFocus(); - break; - case 2: ; - m_pResults-> ShowWindow(SW_HIDE); - m_pQuery-> ShowWindow(SW_HIDE); - m_pStatus-> ShowWindow(SW_SHOW); - m_pStatus->m_ctl_edit.SetFocus(); - break; - default: - break; - } - -} - -///////////////////////////////////////////////////////////////////////////// - -void CalculateFontSize ( CEdit& ed, CSize& sizeRet ) - -{ - - CDC* pdc = ed.GetDC(); - - int nAveWidth , nAveHeight; - int i ; - - CSize size ; - - static BOOL bFirstTime = TRUE; - static char rgchAlphabet [54] ; - - if ( bFirstTime ) - { - bFirstTime = false; - for ( i = 0 ; i <= 25 ; i++) - { - rgchAlphabet[i] = (char)(i+(int)'a') ; - rgchAlphabet[i+26] = (char)(i+(int)'A') ; - } - rgchAlphabet[52] = 0x20; - rgchAlphabet[53] = 0x20; - } - - CFont* pf = ed.GetFont(); - LOGFONT lf; - pf->GetLogFont(&lf); - pdc->SelectObject (pf); - GetTextExtentPoint32 ( pdc->m_hDC, (LPSTR) rgchAlphabet, 54, & size ) ; - - nAveWidth = size.cx / 54 ; - - if ( size.cx % 54 ) - { - nAveWidth++; - } - - nAveHeight = size.cy; //6 * size.cy / 4; - - sizeRet.cx = nAveWidth; - sizeRet.cy = nAveHeight; // tm.tmHeight; - - ed.ReleaseDC(pdc); - -} - -/////////////////////////////////////////////////////////////////////////////// -int ProcessYieldMessage () -{ - - CWinApp* pApp = AfxGetApp(); - - if ( pApp ) - { - MSG msgx; - while (::PeekMessage(&msgx, NULL, NULL, NULL, PM_NOREMOVE)) - try - { - if (!pApp->PumpMessage()) - { -// ExitProcess(1); - } - } - catch (...) - { - } - } - - return 0; - -} - - -///////////////////////////////////////////////////////////////////////////// - -void print_table_data(MYSQL_RES *result,CString& str,CEdit& ed,LOGFONT& lf) -{ - MYSQL_ROW cur; - uint length; - MYSQL_FIELD* field; - bool* num_flag; - my_ulonglong nRows = mysql_num_rows(result); - uint nFields = mysql_num_fields(result); - int* rgi = new int [nFields]; - memset ( rgi, 0, nFields*sizeof(int) ); - num_flag=(bool*) my_alloca(sizeof(bool)*nFields); - - ed.SetLimitText(65535*16); - - CSize sizeFont; - CalculateFontSize ( ed, sizeFont ); - uint index = 0; - rgi[index++]=0; - CString separator(""); - - mysql_field_seek(result,0); - - for (uint off=0; (field = mysql_fetch_field(result)) ; off++) - { - uint length= (uint) strlen(field->name); - length=max(length,field->max_length); - if (length < 4 && !IS_NOT_NULL(field->flags)) - length=4; // Room for "NULL" - field->max_length=length+1; - int n=length+2; - for (uint i=lstrlen(field->name); i-- > 0 ; ) separator+="-"; - if ( index!= nFields ) - { - int o = rgi[index-1]; - rgi[index++]=o+((n+1)*sizeFont.cx)/2; - } - separator+='\t'; - str += field->name; - str += "\t"; - num_flag[off]= IS_NUM(field->type); - } - separator += "\r\n"; - str += "\r\n"; - str += separator; - ed.SetSel(-1,-1); - ed.ReplaceSel(str); - - if ( 1 || nRows > 100 ) - { - while ((cur = mysql_fetch_row(result))) - { - ProcessYieldMessage (); - mysql_field_seek(result,0); - str.Empty(); - ed.SetSel(-1,-1); - for (uint off=0 ; off < mysql_num_fields(result); off++) - { - field = mysql_fetch_field(result); - length=field->max_length; - CString strText; - strText.Format ("%s", cur[off] ? (char*) cur[off] : "NULL"); - str += strText; - str += "\t"; - } - str += "\r\n"; - ed.SetSel(-1,-1); - ed.ReplaceSel(str); - } - } - else - { - while ((cur = mysql_fetch_row(result))) - { - mysql_field_seek(result,0); - for (uint off=0 ; off < mysql_num_fields(result); off++) - { - field = mysql_fetch_field(result); - length=field->max_length; - CString strText; - strText.Format ("%s", cur[off] ? (char*) cur[off] : "NULL"); - str += strText; - str += "\t"; - } - str += "\r\n"; - } - } - my_afree((gptr) num_flag); - str += "\r\n"; - ed.SetTabStops(nFields,rgi); - delete [] rgi; -} - - - -///////////////////////////////////////////////////////////////////////////// - -void CToolSql::OnQueryPb() -{ - - CWaitCursor x; -// mysql_select_db(m_pdb,"mysql"); - - if ( m_pResource && m_pResource->GetType() == CResource::eDatabase ) - { - CString strDB = m_pResource->GetDisplayName(); - strDB.TrimRight(); - if (mysql_select_db(m_pdb,strDB)) - { - } - } - - m_pQuery->UpdateData(); - m_pResults->m_edit.Empty(); - CString str = m_pQuery->m_edit; - if ( mysql_real_query(m_pdb,str,str.GetLength())==0 ) - { - MYSQL_RES *result; - if ((result=mysql_store_result(m_pdb))) - { - my_ulonglong nRows = mysql_num_rows(result); - m_pResults->UpdateData(FALSE); - m_tabs.SetCurSel(1); - ActivateTab ( 1 ); - print_table_data(result,m_pResults->m_edit,m_pResults->m_ctl_edit,m_lf); -// m_pResults->UpdateData(FALSE); - m_pResults->m_ctl_edit.SetSel(-1,-1); - CString strText; - strText.Format ( "\r\n(%d row(s) affected)\r\n", nRows ); - m_pResults->m_ctl_edit.ReplaceSel(strText); - mysql_free_result(result); - } - else - { - m_pResults->m_edit = mysql_error(m_pdb); - m_pResults->UpdateData(FALSE); - } - } - else - { - m_pResults->m_edit = mysql_error(m_pdb); - m_pResults->UpdateData(FALSE); - } - - m_tabs.SetCurSel(1); - ActivateTab ( 1 ); - -} - -///////////////////////////////////////////////////////////////////////////// - -void CToolSql::OnQueryDatabases() -{ - CWaitCursor x; - MYSQL_RES *result; - m_pResults->m_edit.Empty(); - if ((result=mysql_list_dbs(m_pdb,0))) - { - my_ulonglong nRows = mysql_num_rows(result); - print_table_data(result,m_pResults->m_edit,m_pResults->m_ctl_edit,m_lf); - //m_pResults->UpdateData(FALSE); - mysql_free_result(result); - } - else - { - m_pResults->m_edit = mysql_error(m_pdb); - m_pResults->UpdateData(FALSE); - } - - m_tabs.SetCurSel(1); - ActivateTab ( 1 ); - -} - -///////////////////////////////////////////////////////////////////////////// - -void CToolSql::OnSelchangeTab1(NMHDR* pNMHDR, LRESULT* pResult) -{ - ActivateTab ( m_tabs.GetCurSel() ); - *pResult = 0; -} - -///////////////////////////////////////////////////////////////////////////// - -void CToolSql::OnFontPb() -{ - - CFontDialog FontDlg ( & m_lf ); - - if ( FontDlg.DoModal ( ) == IDOK ) - { - if (m_font.GetSafeHandle()) - m_font.DeleteObject(); - m_lf = *FontDlg.m_cf.lpLogFont; - m_font.CreateFontIndirect(FontDlg.m_cf.lpLogFont); - m_pQuery->SetFont(&m_font); - m_pResults->SetFont(&m_font); - m_pStatus->SetFont(&m_font); - } - -} - -///////////////////////////////////////////////////////////////////////////// - -void CToolSql::DoOnSize(UINT nType, int cx, int cy) -{ - - int nx = cx - ( m_rectDlg[CLIENT_COORDS].Width ( ) - m_rectTab[CLIENT_COORDS].Width ( ) ); - int ny = cy - ( m_rectDlg[CLIENT_COORDS].Height ( ) - m_rectTab[CLIENT_COORDS].Height ( ) ); - - if (IsWindow(m_tabs.GetSafeHwnd())) - { - m_tabs.SetWindowPos ( NULL - , 0 - , 0 - , nx - , ny - , SWP_NOZORDER | SWP_NOMOVE | SWP_SHOWWINDOW ); - - if (m_pResults&&IsWindow(m_pResults->GetSafeHwnd())) - m_pResults -> SetWindowPos(NULL,20,24,nx-40,ny-48,SWP_NOZORDER | SWP_NOMOVE ); - if (m_pQuery&&IsWindow(m_pQuery->GetSafeHwnd())) - m_pQuery -> SetWindowPos(NULL,20,24,nx-40,ny-48,SWP_NOZORDER | SWP_NOMOVE ); - if (m_pStatus&&IsWindow(m_pStatus->GetSafeHwnd())) - m_pStatus -> SetWindowPos(NULL,20,24,nx-40,ny-48,SWP_NOZORDER | SWP_NOMOVE ); -// switch ( m_tabs.GetCurSel() ) -// { -// case 0: -// { -// if (m_pResults&&IsWindow(m_pResults->GetSafeHwnd())) -// m_pResults -> SetWindowPos(NULL,20,24,nx-40,ny-48,SWP_NOZORDER | SWP_NOMOVE | SWP_HIDEWINDOW ); -// if (m_pQuery&&IsWindow(m_pQuery->GetSafeHwnd())) -// m_pQuery -> SetWindowPos(NULL,20,24,nx-40,ny-48,SWP_NOZORDER | SWP_NOMOVE | SWP_SHOWWINDOW ); -// break; -// } -// case 1: -// { -// if (m_pQuery&&IsWindow(m_pQuery->GetSafeHwnd())) -// m_pQuery -> SetWindowPos(NULL,20,24,nx-40,ny-48,SWP_NOZORDER | SWP_NOMOVE | SWP_HIDEWINDOW ); -// if (m_pResults&&IsWindow(m_pResults->GetSafeHwnd())) -// m_pResults -> SetWindowPos(NULL,20,24,nx-40,ny-48,SWP_NOZORDER | SWP_NOMOVE | SWP_SHOWWINDOW ); -// break; -// } -// } - } - -} - -///////////////////////////////////////////////////////////////////////////// - -void CToolSql::OnSize(UINT nType, int cx, int cy) -{ - - CDialog::OnSize(nType, cx, cy); - - DoOnSize ( nType, cx, cy ); - -} - -///////////////////////////////////////////////////////////////////////////// - -void CToolSql::OnOK() -{ - CDialog::OnOK(); -} - -///////////////////////////////////////////////////////////////////////////// - -void CToolSql::OnCancel() -{ - CDialog::OnCancel(); -} - -///////////////////////////////////////////////////////////////////////////// - -BOOL CToolSql::PreTranslateMessage(MSG* pMsg) -{ - return CDialog::PreTranslateMessage(pMsg); -} - -///////////////////////////////////////////////////////////////////////////// - -void CToolSql::DoProcessListQuery() -{ - - MYSQL_RES *result; - if (result=mysql_list_processes(m_pdb)) - { - if (m_bClear) - { - m_pStatus->m_edit.Empty(); - m_pStatus->UpdateData(FALSE); - } - print_table_data(result,m_pStatus->m_edit,m_pStatus->m_ctl_edit,m_lf); - mysql_free_result(result); - } - else - { -// my_printf_error(0,"process list failed; error: '%s'",MYF(ME_BELL),mysql_error(mysql)); - } - -} - -///////////////////////////////////////////////////////////////////////////// - -void CToolSql::OnStartPb() -{ - UpdateData(); - if (m_ui_timer) return; - if (m_nIntervalTimerSeconds<1) return; - ActivateTab ( 2 ); - m_ui_timer = SetTimer( MY_TIMER_ID, m_nIntervalTimerSeconds*1000, NULL ); - m_ctl_Start . EnableWindow(FALSE); - m_ctl_Stop . EnableWindow(TRUE); - DoProcessListQuery(); -} - -///////////////////////////////////////////////////////////////////////////// - -void CToolSql::OnStopPb() -{ - UpdateData(); - if (m_ui_timer) - { - KillTimer(MY_TIMER_ID); - m_ui_timer = 0; - } - m_ctl_Start . EnableWindow(TRUE); - m_ctl_Stop . EnableWindow(FALSE); -} - -///////////////////////////////////////////////////////////////////////////// - -void CToolSql::OnTimer(UINT nIDEvent) -{ - DoProcessListQuery(); - CDialog::OnTimer(nIDEvent); -} - -void CToolSql::OnDestroy() -{ - if (m_ui_timer) - { - KillTimer(MY_TIMER_ID); - m_ui_timer = 0; - } - CDialog::OnDestroy(); -} - -void CToolSql::OnClear() -{ - UpdateData(); -} - -void CToolSql::OnChangeTimerSecs() -{ - UpdateData(); -} |