- Visual C++源码
- Visual Basic源码
- C++ Builder源码
- Java源码
- Delphi源码
- C/C++源码
- PHP源码
- Perl源码
- Python源码
- Asm源码
- Pascal源码
- Borland C++源码
- Others源码
- SQL源码
- VBScript源码
- JavaScript源码
- ASP/ASPX源码
- C#源码
- Flash/ActionScript源码
- matlab源码
- PowerBuilder源码
- LabView源码
- Flex源码
- MathCAD源码
- VBA源码
- IDL源码
- Lisp/Scheme源码
- VHDL源码
- Objective-C源码
- Fortran源码
- tcl/tk源码
- QT源码
ExecuteSQLProc.cpp
资源名称:ISQL_src.zip [点击查看]
上传用户:jsxglz
上传日期:2007-01-03
资源大小:117k
文件大小:2k
源码类别:
SQL Server
开发平台:
Visual C++
- // ExecuteSQLProc.cpp: implementation of the CExecuteSQLProc class.
- //
- #include "stdafx.h"
- #include "interactivesql.h"
- #include "ExecuteSQLProc.h"
- #include "ResultView.h"
- #ifdef _DEBUG
- #undef THIS_FILE
- static char THIS_FILE[]=__FILE__;
- #define new DEBUG_NEW
- #endif
- const char* g_szFunctionSequenceError = "State:S1010";
- //////////////////////////////////////////////////////////////////////
- // CExecuteSQLProc
- CExecuteSQLProc::CExecuteSQLProc()
- {
- }
- CExecuteSQLProc::~CExecuteSQLProc()
- {
- }
- UINT ExecuteSQLProc(LPVOID lpVoid)
- {
- ThreadParam* pTP = (ThreadParam*)lpVoid;
- ASSERT(pTP);
- ASSERT(!pTP->m_strSQL.IsEmpty());
- CMainFrame* pFrame = pTP->m_pFrame;
- ASSERT(pFrame);
- ASSERT(pTP->m_pView);
- ASSERT(pTP->m_pFrame->m_pSet);
- BOOL bCaughtException = FALSE;
- try
- {
- if(pTP->m_pFrame->m_pSet->m_hstmt && pTP->m_pFrame->m_pSet->IsOpen())
- pTP->m_pFrame->m_pSet->Close();
- pTP->m_pFrame->m_database.SetQueryTimeout(pTP->m_pFrame->m_nQueryTimeOut);
- pTP->m_pFrame->m_pSet->ExecDirect(pTP->m_strSQL);
- }
- catch(CDBException* e)
- {
- bCaughtException = TRUE;
- if(e)
- {
- CString sMsg;
- if(e->m_strStateNativeOrigin.Find(g_szFunctionSequenceError) != -1)
- {
- pTP->m_pFrame->m_bCanceled = TRUE;
- sMsg = "Query canceled by user.";
- pTP->m_pFrame->m_strStatusText = "Canceled";
- }
- else
- {
- if(!e->m_strError.IsEmpty())
- sMsg.Format("%s%s", (LPCTSTR)e->m_strError, (LPCTSTR)e->m_strStateNativeOrigin);
- else
- sMsg = e->m_strStateNativeOrigin;
- pTP->m_pFrame->m_strStatusText.Format("CDBException::m_nRetCode == %d", e->m_nRetCode);
- }
- pTP->m_pView->SetWindowText(sMsg);
- e->Delete();
- }
- }
- catch(CMemoryException* e)
- {
- bCaughtException = TRUE;
- pTP->m_pFrame->m_strStatusText = "Out-of-memory";
- pTP->m_pView->SetWindowText(pTP->m_pFrame->m_strStatusText);
- if(e)
- e->Delete();
- }
- if(bCaughtException)
- if(pTP->m_pFrame->m_pSet->IsOpen())
- pTP->m_pFrame->m_pSet->Close();
- ::PostMessage(pTP->m_pFrame->m_hWnd, WM_EXECUTION_COMPLETE, bCaughtException, 0L);
- return 0; // Gracefully exit
- }