⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 set3database.cpp

📁 mcgs的数据导出源代码
💻 CPP
📖 第 1 页 / 共 3 页
字号:
// Set3Database.cpp : implementation file
//

#include "stdafx.h"
#include "Data_Trans.h"
#include "Data_TransDlg.h"
#include "Set3Database.h"
#include "FileDialogST.h"
#include "VirtualInfoFile.h"

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

/////////////////////////////////////////////////////////////////////////////
// CSet3Database dialog


CSet3Database::CSet3Database(CWnd* pParent /*=NULL*/)
	: CDialog(CSet3Database::IDD, pParent)
{
	//{{AFX_DATA_INIT(CSet3Database)
	m_strSaveDBName = _T("");
	m_strSaveUserName = _T("");
	m_strSavePassword = _T("");
	m_strSaveServer = _T("");
	m_FileName = _T("");
	//}}AFX_DATA_INIT
	m_Dlg = (CData_TransDlg*)pParent;
	m_bShowFinish  = false;
	m_bFirst = false;
}


void CSet3Database::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CSet3Database)
	DDX_Control(pDX, IDC_COMBO3, m_DataType);
	DDX_Text(pDX, IDC_EDIT2, m_strSaveDBName);
	DDX_Text(pDX, IDC_EDIT3, m_strSaveUserName);
	DDX_Text(pDX, IDC_EDIT4, m_strSavePassword);
	DDX_Text(pDX, IDC_EDIT1, m_strSaveServer);
	DDX_Control(pDX, IDC_DATETIMEPICKER4, m_ctrlTimeEnd);
	DDX_Control(pDX, IDC_DATETIMEPICKER2, m_ctrlDayEnd);
	DDX_Control(pDX, IDC_DATETIMEPICKER3, m_ctrlTimeStart);
	DDX_Control(pDX, IDC_DATETIMEPICKER1, m_ctrlDayStart);
	DDX_Text(pDX, IDC_EDIT5, m_FileName);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CSet3Database, CDialog)
	//{{AFX_MSG_MAP(CSet3Database)
	ON_BN_CLICKED(IDC_BUTTON3, OnButton3)
	ON_BN_CLICKED(IDC_BUTTON4, OnButton4)
	ON_WM_PAINT()
	ON_EN_CHANGE(IDC_EDIT2, OnChangeEdit2)
	ON_CBN_SELCHANGE(IDC_COMBO1, OnSelchangeCombo1)
	ON_NOTIFY(DTN_DATETIMECHANGE, IDC_DATETIMEPICKER1, OnDatetimechangeDatetimepicker1)
	ON_NOTIFY(DTN_DATETIMECHANGE, IDC_DATETIMEPICKER2, OnDatetimechangeDatetimepicker2)
	ON_NOTIFY(DTN_DATETIMECHANGE, IDC_DATETIMEPICKER3, OnDatetimechangeDatetimepicker3)
	ON_NOTIFY(DTN_DATETIMECHANGE, IDC_DATETIMEPICKER4, OnDatetimechangeDatetimepicker4)
	ON_CBN_SELCHANGE(IDC_COMBO2, OnSelchangeCombo2)
	ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
	ON_CBN_EDITCHANGE(IDC_COMBO3, OnEditchangeCombo3)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CSet3Database message handlers
int	CSet3Database::SvrConnectDatabase()
{
	// TODO: Add your control notification handler code here
	//对数据库进行测试
	UpdateData();
	m_Dlg->SetWizButton(2);
	UpdateData(TRUE);
	int iSel = ((CComboBox*)GetDlgItem(IDC_COMBO1))->GetCurSel();
	if (iSel != CB_ERR)
	{
		((CComboBox*)GetDlgItem(IDC_COMBO1))->GetLBText(iSel,m_strSaveDriver);
	}
	else
	{
		AfxMessageBox("please choose data-access engine");
		return -1;
	}
	iSel = ((CComboBox*)GetDlgItem(IDC_COMBO2))->GetCurSel();
	if (iSel != CB_ERR)
	{
		((CComboBox*)GetDlgItem(IDC_COMBO2))->GetLBText(iSel,m_DateName);
	}
	else
	{
		AfxMessageBox("please choose data-object");
		return -1;
	}
	BYTE DatabaseType =0;	//0,表示sql数据库,1,表示access数据库.2,表示oracle数据库
	//生成连接状态字符串	
	CString strConnect;
	CString m_strSaveResult;
	{
		CString str = m_strSaveDriver;
		str.MakeUpper ();
		CString strPassword("********************************************************************************");
		strPassword = strPassword.Left (m_strSavePassword.GetLength ());

		if (str.Find("SQL") >= 0)
		{
			m_strSaveResult = McgsString( IDS_FORMAT_STR_28 ) + m_strSaveDriver;
			m_strSaveResult += McgsString( IDS_FORMAT_STR_29 ) + m_strSaveServer;
			m_strSaveResult += McgsString( IDS_FORMAT_STR_30 ) + m_strSaveDBName;
			m_strSaveResult += McgsString( IDS_FORMAT_STR_31 ) + m_strSaveUserName;
			m_strSaveResult +=  McgsString( IDS_FORMAT_STR_32 ) + strPassword;
			m_strSaveResult += McgsString( IDS_FORMAT_STR_33 );		

			strConnect = "UID=" + m_strSaveUserName;
			strConnect += ";PWD=" + m_strSavePassword;
			strConnect += ";DATABASE=" + m_strSaveDBName;
			strConnect += ";SERVER=" + m_strSaveServer;
			strConnect += ";DRIVER={" + m_strSaveDriver;
			strConnect += "};DSN='';";
		}
		else if (str.Find("ACCESS") >= 0)
		{
			m_strSaveResult = McgsString( IDS_FORMAT_STR_28 ) + m_strSaveDriver;
			m_strSaveResult += McgsString( IDS_FORMAT_STR_30 ) + m_strSaveDBName;
			m_strSaveResult +=  McgsString( IDS_FORMAT_STR_33 );

			strConnect = "DBQ=" + m_strSaveDBName + ";DRIVER={" + m_strSaveDriver + "};DSN='';Uid=Admin; Pwd=";

			//如果是ACCESS数据库,不存在的话就创建一个.
			HANDLE handle = NULL;
			CString strFileName = m_strSaveDBName;
			WIN32_FIND_DATA data;
			handle = FindFirstFile(strFileName,&data);
			if (handle ==INVALID_HANDLE_VALUE)
			{
				try
				{
					CDaoDatabase dbSystem;//(&((CData_TransApp*)AfxGetApp())->m_WorkSpace);
					dbSystem.Create(strFileName,dbLangGeneral);
				}
				catch(CException* e)
				{
					e->Delete();
				}
			}
			else
			{
				FindClose(handle);
			}
			DatabaseType = 1;
		}
		else if (str.Find("ORACLE") >= 0)
		{
			m_strSaveResult = McgsString( IDS_FORMAT_STR_28 ) + m_strSaveDriver;
			m_strSaveResult += "\r\nConnectString" + m_strSaveDBName;
			m_strSaveResult += McgsString( IDS_FORMAT_STR_31 ) + m_strSaveUserName;
			m_strSaveResult += McgsString( IDS_FORMAT_STR_32 ) + strPassword;
			m_strSaveResult += McgsString( IDS_FORMAT_STR_33 );		

			strConnect = "UID=" + m_strSaveUserName + ";PWD=" + m_strSavePassword + ";ConnectString=" + m_strSaveDBName + 
				";DRIVER={" + m_strSaveDriver + "};DSN='';";
			DatabaseType = 2;
		}
	}

	//测试组态数据库 
	SQLHANDLE henv = NULL;
	SQLHANDLE hdbc = NULL;
	long iResult = 0;
	
    //获得环境句柄
	iResult = SQLAllocEnv(&henv);
	bool bTrue;
	if ( iResult == SQL_SUCCESS )
	{
		iResult = SQLAllocConnect(henv, &hdbc);
		if (SQL_SUCCESS == iResult )
		{
			//测试连接参数
			SHORT nResult = 0;
			UCHAR szConnectOutput[1000];
			iResult = (::SQLDriverConnect(hdbc, NULL,
				(UCHAR*)(const char*)strConnect, (SHORT)strConnect.GetLength(),//SQL_NTS,
				szConnectOutput, MAX_CONNECT_LEN,
				&nResult, SQL_DRIVER_NOPROMPT));
			if (iResult != SQL_SUCCESS)
			{ 
				if ( iResult == SQL_SUCCESS_WITH_INFO )
				{
					//获取携带的信息
					//long hstmt = 0;
					UCHAR sBuffer1[32],sBuffer2[256];
					memset(sBuffer1,0,sizeof(UCHAR)*32);
					memset(sBuffer2,0,sizeof(UCHAR)*256);
					long lNative = 0;
					SHORT iOutLen = 0;
					do{
						iOutLen = 0;
						iResult = SQLError(henv, hdbc, 0, sBuffer1, &lNative, sBuffer2, 256, &iOutLen) ;
					}
					while (SQL_SUCCESS == iResult && iOutLen == 0);

					if (iOutLen > 0)
					{
						sBuffer2[iOutLen] = 0;
						m_strSaveResult = m_strSaveResult + McgsString( IDS_FORMAT_STR_34 ) ;//+ sBuffer2;
					}
					else
					{
						m_strSaveResult = m_strSaveResult + McgsString(  IDS_FORMAT_STR_35 );
					}					
					VERIFY(SQL_SUCCESS == SQLDisconnect(hdbc));
					bTrue = true;
				}
				else
				{
					//获取携带的信息
					//long hstmt = 0;
					UCHAR sBuffer1[32],sBuffer2[256];
					memset(sBuffer1,0,sizeof(UCHAR)*32);
					memset(sBuffer2,0,sizeof(UCHAR)*256);
					long lNative = 0;
					SHORT iOutLen = 0;
					do{
						iOutLen = 0;
						iResult = SQLError(henv, hdbc, 0, sBuffer1, &lNative, sBuffer2, 256, &iOutLen) ;
					}
					while (SQL_SUCCESS == iResult && iOutLen == 0);

					if (iOutLen > 0)
					{
						sBuffer2[iOutLen] = 0;
						m_strSaveResult = m_strSaveResult + "\r\n connect fail \r\n" ;//+ sBuffer2;
					}
					else
					{
						m_strSaveResult = m_strSaveResult + McgsString(  IDS_FORMAT_STR_36 );
					}	
					bTrue = false;
				}				
			}
			else
			{
				m_strSaveResult += McgsString(  IDS_FORMAT_STR_35  );
				VERIFY(SQL_SUCCESS == SQLDisconnect(hdbc));
				bTrue = true;
			}			
			//释放
			VERIFY(SQL_SUCCESS == SQLFreeHandle(SQL_HANDLE_DBC,hdbc));
		}
		else
		{
			m_strSaveResult +="\r\nComponent error, please install ODBC again!";
			bTrue = false;
		}	
		VERIFY(SQL_SUCCESS == SQLFreeHandle(SQL_HANDLE_ENV,henv));
	}
	else
	{
		m_strSaveResult += "\r\nComponent error, please install ODBC again!";
		bTrue = false;
	}

	m_strConnect = strConnect ;
	if (bTrue )
	{
		UpdateData(FALSE);
		m_Dlg->SetWizButton(5);
		SetConnect(true);
		m_Dlg->m_strDataName = m_DateName;
		m_Dlg->m_iType = 1;	//设置路径
		
	}
	else
	{
		AfxMessageBox(m_strSaveResult);
		AfxMessageBox("connecting database failed!");
		return -1;
	}
	return 0;
}

void CSet3Database::OnButton3() 
{
	// TODO: Add your control notification handler code here
	//对数据库进行测试
	UpdateData();
	m_Dlg->SetWizButton(2);
	UpdateData(TRUE);
	int iSel = ((CComboBox*)GetDlgItem(IDC_COMBO1))->GetCurSel();
	if (iSel != CB_ERR)
	{
		((CComboBox*)GetDlgItem(IDC_COMBO1))->GetLBText(iSel,m_strSaveDriver);
	}
	else
	{
		AfxMessageBox("please choose data-access engine ");
		return ;
	}
	iSel = ((CComboBox*)GetDlgItem(IDC_COMBO2))->GetCurSel();
	if (iSel != CB_ERR)
	{
		((CComboBox*)GetDlgItem(IDC_COMBO2))->GetLBText(iSel,m_DateName);
	}
	else
	{
		AfxMessageBox("please choose data-object");
		return ;
	}
	BYTE DatabaseType =0;	//0,表示sql数据库,1,表示access数据库.2,表示oracle数据库
	//生成连接状态字符串	
	CString strConnect;
	CString m_strSaveResult;
	{
		CString str = m_strSaveDriver;
		str.MakeUpper ();
		CString strPassword("********************************************************************************");
		strPassword = strPassword.Left (m_strSavePassword.GetLength ());

		if (str.Find("SQL") >= 0)
		{
			m_strSaveResult = McgsString( IDS_FORMAT_STR_28 ) + m_strSaveDriver;
			m_strSaveResult += McgsString( IDS_FORMAT_STR_29 ) + m_strSaveServer;
			m_strSaveResult += McgsString( IDS_FORMAT_STR_30 ) + m_strSaveDBName;
			m_strSaveResult += McgsString( IDS_FORMAT_STR_31 ) + m_strSaveUserName;
			m_strSaveResult +=  McgsString( IDS_FORMAT_STR_32 ) + strPassword;
			m_strSaveResult += McgsString( IDS_FORMAT_STR_33 );		

			strConnect = "UID=" + m_strSaveUserName;
			strConnect += ";PWD=" + m_strSavePassword;
			strConnect += ";DATABASE=" + m_strSaveDBName;
			strConnect += ";SERVER=" + m_strSaveServer;
			strConnect += ";DRIVER={" + m_strSaveDriver;
			strConnect += "};DSN='';";
		}
		else if (str.Find("ACCESS") >= 0)
		{
			m_strSaveResult = McgsString( IDS_FORMAT_STR_28 ) + m_strSaveDriver;
			m_strSaveResult += McgsString( IDS_FORMAT_STR_30 ) + m_strSaveDBName;
			m_strSaveResult +=  McgsString( IDS_FORMAT_STR_33 );

			strConnect = "DBQ=" + m_strSaveDBName + ";DRIVER={" + m_strSaveDriver + "};DSN='';Uid=Admin; Pwd=";

			//如果是ACCESS数据库,不存在的话就创建一个.
			HANDLE handle = NULL;
			CString strFileName = m_strSaveDBName;
			WIN32_FIND_DATA data;
			handle = FindFirstFile(strFileName,&data);
			if (handle ==INVALID_HANDLE_VALUE)
			{
				try
				{
					CDaoDatabase dbSystem(&((CData_TransApp*)AfxGetApp())->m_WorkSpace);
					dbSystem.Create(strFileName,dbLangGeneral);
				}
				catch(CException* e)
				{
					e->Delete();
				}
			}
			else
			{
				FindClose(handle);
			}
			DatabaseType = 1;
		}
		else if (str.Find("ORACLE") >= 0)
		{
			m_strSaveResult = McgsString( IDS_FORMAT_STR_28 ) + m_strSaveDriver;
			m_strSaveResult += "\r\nConnectString" + m_strSaveDBName;
			m_strSaveResult += McgsString( IDS_FORMAT_STR_31 ) + m_strSaveUserName;
			m_strSaveResult += McgsString( IDS_FORMAT_STR_32 ) + strPassword;
			m_strSaveResult += McgsString( IDS_FORMAT_STR_33 );		

			strConnect = "UID=" + m_strSaveUserName + ";PWD=" + m_strSavePassword + ";ConnectString=" + m_strSaveDBName + 
				";DRIVER={" + m_strSaveDriver + "};DSN='';";
			DatabaseType = 2;
		}
	}

	//测试组态数据库 
	SQLHANDLE henv = NULL;
	SQLHANDLE hdbc = NULL;
	long iResult = 0;
	
    //获得环境句柄
	iResult = SQLAllocEnv(&henv);
	bool bTrue;
	if ( iResult == SQL_SUCCESS )
	{
		iResult = SQLAllocConnect(henv, &hdbc);
		if (SQL_SUCCESS == iResult )
		{
			//测试连接参数
			SHORT nResult = 0;
			UCHAR szConnectOutput[1000];
			iResult = (::SQLDriverConnect(hdbc, NULL,
				(UCHAR*)(const char*)strConnect, (SHORT)strConnect.GetLength(),//SQL_NTS,
				szConnectOutput, MAX_CONNECT_LEN,
				&nResult, SQL_DRIVER_NOPROMPT));
			if (iResult != SQL_SUCCESS)
			{ 
				if ( iResult == SQL_SUCCESS_WITH_INFO )
				{
					//获取携带的信息
					//long hstmt = 0;
					UCHAR sBuffer1[32],sBuffer2[256];
					memset(sBuffer1,0,sizeof(UCHAR)*32);
					memset(sBuffer2,0,sizeof(UCHAR)*256);
					long lNative = 0;
					SHORT iOutLen = 0;
					do{
						iOutLen = 0;
						iResult = SQLError(henv, hdbc, 0, sBuffer1, &lNative, sBuffer2, 256, &iOutLen) ;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -