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

📄 importdlg.cpp

📁 一个用ADO执行存储过程的例子
💻 CPP
📖 第 1 页 / 共 2 页
字号:
            case VT_UI1:
                strRet += _T("VT_UI1");
                break;
            case VT_UI2:
                strRet += _T("VT_UI2");
                break;
            case VT_UI4:
                strRet += _T("VT_UI4");
                break;
            case VT_I8:
                strRet += _T("VT_I8");
                break;
            case VT_UI8:
                strRet += _T("VT_UI8");
                break;
            case VT_INT:
                strRet += _T("VT_INT");
                break;
            case VT_UINT:
                strRet += _T("VT_UINT");
                break;
            case VT_VOID:
                strRet += _T("VT_VOID");
                break;
            case VT_HRESULT:
                strRet += _T("VT_HRESULT");
                break;
            case VT_PTR:
                strRet += _T("VT_PTR");
                break;
            case VT_SAFEARRAY:
                strRet += _T("VT_SAFEARRAY");
                break;
            case VT_CARRAY:
                strRet += _T("VT_CARRAY");
                break;
            case VT_USERDEFINED:
                strRet += _T("VT_USERDEFINED");
                break;
            case VT_LPSTR:
                strRet += _T("VT_LPSTR");
                break;
            case VT_LPWSTR:
                strRet += _T("VT_LPWSTR");
                break;
            case VT_FILETIME:
                strRet += _T("VT_FILETIME");
                break;
            case VT_BLOB:
                strRet += _T("VT_BLOB");
                break;
            case VT_STREAM:
                strRet += _T("VT_STREAM");
                break;
            case VT_STORAGE:
                strRet += _T("VT_STORAGE");
                break;
            case VT_STREAMED_OBJECT:
                strRet += _T("VT_STREAMED_OBJECT");
                break;
            case VT_STORED_OBJECT:
                strRet += _T("VT_STORED_OBJECT");
                break;
            case VT_BLOB_OBJECT:
                strRet += _T("VT_BLOB_OBJECT");
                break;
            case VT_CF:
                strRet += _T("VT_CF");
                break;
            case VT_CLSID:
                strRet += _T("VT_CLSID");
                break;
        }
    }
    return strRet;
}







class CAboutDlg : public CDialog
{
public:
	CAboutDlg();

// Dialog Data
	//{{AFX_DATA(CAboutDlg)
	enum { IDD = IDD_ABOUTBOX };
	//}}AFX_DATA

	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CAboutDlg)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
	//}}AFX_VIRTUAL

// Implementation
protected:
	//{{AFX_MSG(CAboutDlg)
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
	//{{AFX_DATA_INIT(CAboutDlg)
	//}}AFX_DATA_INIT
}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CAboutDlg)
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
	//{{AFX_MSG_MAP(CAboutDlg)
		// No message handlers
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CImportDlg dialog

CImportDlg::CImportDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CImportDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CImportDlg)
	m_sdatasource = _T("");
	m_sfilename = _T("");
	m_status = _T("");
	m_sUserID = _T("");
	m_sPassword = _T("");
	//}}AFX_DATA_INIT
	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CImportDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CImportDlg)
	DDX_Text(pDX, IDC_DATASOURCE, m_sdatasource);
	DDX_Text(pDX, IDC_FILENAME, m_sfilename);
	DDX_Text(pDX, IDC_STATUS, m_status);
	DDX_Text(pDX, IDC_USERID, m_sUserID);
	DDX_Text(pDX, IDC_PASSWORD, m_sPassword);
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CImportDlg, CDialog)
	//{{AFX_MSG_MAP(CImportDlg)
	ON_WM_SYSCOMMAND()
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	ON_BN_CLICKED(IDC_IMPORT, OnImport)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CImportDlg message handlers

BOOL CImportDlg::OnInitDialog()
{
	CDialog::OnInitDialog();
	::CoInitialize(NULL);

	// Add "About..." menu item to system menu.

	// IDM_ABOUTBOX must be in the system command range.
	ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
	ASSERT(IDM_ABOUTBOX < 0xF000);

	CMenu* pSysMenu = GetSystemMenu(FALSE);
	if (pSysMenu != NULL)
	{
		CString strAboutMenu;
		strAboutMenu.LoadString(IDS_ABOUTBOX);
		if (!strAboutMenu.IsEmpty())
		{
			pSysMenu->AppendMenu(MF_SEPARATOR);
			pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
		}
	}

	// Set the icon for this dialog.  The framework does this automatically
	//  when the application's main window is not a dialog
	SetIcon(m_hIcon, TRUE);			// Set big icon
	SetIcon(m_hIcon, FALSE);		// Set small icon
	
	// TODO: Add extra initialization here
	
	return TRUE;  // return TRUE  unless you set the focus to a control
}

void CImportDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
	if ((nID & 0xFFF0) == IDM_ABOUTBOX)
	{
		CAboutDlg dlgAbout;
		dlgAbout.DoModal();
	}
	else
	{
		CDialog::OnSysCommand(nID, lParam);
	}
}

// If you add a minimize button to your dialog, you will need the code below
//  to draw the icon.  For MFC applications using the document/view model,
//  this is automatically done for you by the framework.

void CImportDlg::OnPaint() 
{
	if (IsIconic())
	{
		CPaintDC dc(this); // device context for painting

		SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

		// Center icon in client rectangle
		int cxIcon = GetSystemMetrics(SM_CXICON);
		int cyIcon = GetSystemMetrics(SM_CYICON);
		CRect rect;
		GetClientRect(&rect);
		int x = (rect.Width() - cxIcon + 1) / 2;
		int y = (rect.Height() - cyIcon + 1) / 2;

		// Draw the icon
		dc.DrawIcon(x, y, m_hIcon);
	}
	else
	{
		CDialog::OnPaint();
	}
}

// The system calls this to obtain the cursor to display while the user drags
//  the minimized window.
HCURSOR CImportDlg::OnQueryDragIcon()
{
	return (HCURSOR) m_hIcon;
}

void CImportDlg::OnImport() 
{
	// TODO: Add your control notification handler code here
	UpdateData(TRUE);
	ByteImport x( (LPTSTR)(LPCTSTR)m_sfilename);
	if( !x.IsFileopen() )
	{
		UpdateData( FALSE );
		return;
	}
	CString strTmp;
   /* strTmp.Format( "driver={sql server};"
                           "server=%s;"
                           "Database=%s;""UID=%s;""PWD=%s;",
                           m_server,m_sdatasource,m_sUserID,m_sPassword );*/

	strTmp.Format( "dsn=%s;""UID=%s;""PWD=%s;",m_sdatasource,m_sUserID,m_sPassword );
    _bstr_t         bstrSQLServerConnect;
	_bstr_t bstrProc =( L"sp_StartByteImport" );;
	_variant_t Final;
     bstrSQLServerConnect = (LPCTSTR) strTmp;
	m_status="Empty File";
	_ConnectionPtr  Conn1;
    _CommandPtr     Cmd1;
    _RecordsetPtr   Rs1;
	bool            bvalid = false;
	_bstr_t bstrProc2 ="sp_AddAccountingInfo";
	try
    {
	  	Conn1.CreateInstance( __uuidof( Connection ) );
		Conn1->ConnectionString = bstrSQLServerConnect;
		Conn1->Open( bstrEmpty, bstrEmpty, bstrEmpty );
		Cmd1.CreateInstance( __uuidof( Command ) );
		Cmd1->ActiveConnection = Conn1;
		Cmd1->CommandText      = _bstr_t( bstrProc );
		Cmd1->CommandType      = adCmdStoredProc;
		Cmd1->Parameters->Refresh();
		Cmd1->Parameters->Item[ _variant_t( (long) 1 ) ]->Value = _variant_t( (LPCTSTR)m_sfilename );
		Rs1 = Cmd1->Execute( &vtEmpty, &vtEmpty2, adCmdUnknown );
		bvalid = true;
		Final = Rs1->Fields->GetItem( _variant_t( 0L ) )->Value;
		strTmp.Format( "%s", CrackStrVariant( Final) );
    }
    catch( CException *e )
    {
		TCHAR    szCause[255];    
        e->GetErrorMessage(szCause, 255);
		m_status=szCause;
    }
    catch( _com_error &e )
    {
		m_status=e.ErrorMessage( );
    }
    catch(...)
    {
		m_status="Error while executing the Import";

    }

	while ( x.next() && bvalid)
	{
		if ( x.isValidRecord() )
		{
			try
			{
				Cmd1->CommandText      = bstrProc2;
				Cmd1->CommandType      = adCmdStoredProc;
				Cmd1->Parameters->Refresh();
				Cmd1->Parameters->Item[ _variant_t( (long) 1 ) ]->Value = Final;
				Cmd1->Parameters->Item[ _variant_t( (long) 2 ) ]->Value = _variant_t( (LPCTSTR)x.pcDate );
				Cmd1->Parameters->Item[ _variant_t( (long) 3 ) ]->Value = _variant_t( (LPCTSTR)x.pcURL );
				Cmd1->Parameters->Item[ _variant_t( (long) 4 ) ]->Value = _variant_t( (LPCTSTR)x.pcTop );
				Cmd1->Parameters->Item[ _variant_t( (long) 5 ) ]->Value = _variant_t( (LPCTSTR)x.pcQueryString );
				Cmd1->Parameters->Item[ _variant_t( (long) 6 ) ]->Value = _variant_t( (long)x.pcBytes );
				Cmd1->Parameters->Item[ _variant_t( (long) 7 ) ]->Value = _variant_t( (long)x.pcRequests );
				Cmd1->Execute( &vtEmpty, &vtEmpty2, adCmdUnknown );
				m_status.Format("Elapsed Time %d second(s) for %d records",x.ElapsedTime(),x.GetRecordCount());

			}
			catch( CException *e )
			{
				TCHAR    szCause[255];    
				e->GetErrorMessage(szCause, 255);
				m_status=szCause;
			}
			catch( _com_error &e )
			{
				m_status=e.ErrorMessage( );
			}
			catch(...)
			{
				m_status="Error while executing the Import";

			}
			
		}
		else
		{
			m_status.Format(" %d bad records out of %d records",x.GetErrorCount(),x.GetRecordCount());
		}
	}
	UpdateData(FALSE);
    if( Rs1                != NULL )  Rs1->Close();   
    if( Conn1              != NULL )  Conn1->Close(); 
	Rs1 = Conn1 = NULL;

}

void CImportDlg::OnOK() 
{
	// TODO: Add extra validation here
	::CoUninitialize();

	CDialog::OnOK();
}

⌨️ 快捷键说明

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