?? set3database.cpp
字號:
// 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 + -