您的位置:首页 > 数据库

自己看别人看了没用,UNICODE下连接数据库

2015-09-11 13:16 477 查看
// adoTestDlg.cpp : implementation file
//

#include "stdafx.h"
#include "adoTest.h"
#include "adoTestDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

// CAboutDlg dialog used for App About

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

// Dialog Data
enum { IDD = IDD_ABOUTBOX };

protected:
virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support

// Implementation
protected:
DECLARE_MESSAGE_MAP()
};

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

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

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
END_MESSAGE_MAP()

// CadoTestDlg dialog

CadoTestDlg::CadoTestDlg(CWnd* pParent /*=NULL*/)
: CDialog(CadoTestDlg::IDD, pParent)
{
//m_pOracleDb = new CADODatabase();
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CadoTestDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
}

BEGIN_MESSAGE_MAP(CadoTestDlg, CDialog)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
//}}AFX_MSG_MAP
ON_BN_CLICKED(IDOK, &CadoTestDlg::OnBnClickedOk)
ON_BN_CLICKED(IDCANCEL, &CadoTestDlg::OnBnClickedCancel)
ON_BN_CLICKED(IDC_BUTTON1, &CadoTestDlg::OnBnClickedButton1)
END_MESSAGE_MAP()

// CadoTestDlg message handlers

BOOL CadoTestDlg::OnInitDialog()
{
CDialog::OnInitDialog();

// 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)
{
BOOL bNameValid;
CString strAboutMenu;
bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);
ASSERT(bNameValid);
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 CadoTestDlg::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 CadoTestDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting

SendMessage(WM_ICONERASEBKGND, reinterpret_cast<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 function to obtain the cursor to display while the user drags
//  the minimized window.
HCURSOR CadoTestDlg::OnQueryDragIcon()
{
return static_cast<HCURSOR>(m_hIcon);
}

void CadoTestDlg::OnBnClickedOk()
{
// TODO: Add your control notification handler code here
InitPacsDB();
}

BOOL CadoTestDlg::InitPacsDB()
{
//Provider = MSDAORA;Data Source=%s;User Id = %s;Password = %s;
CString strOracleConn;

OnBnClickedConnecttest();
return false;

//strOracleConn.Format(_T("Provider=OraOLEDB.Oracle;Data Source=%s;User Id=%s;Password=%s;"),
//	"ORACLE247","hhpacs","hhpacs");

//if(!m_pOracleDb->Open(strOracleConn))
//{
//	return FALSE;
//}

//CADORecordset rs;
//CString strSelectSQL;
//bool bQuerySucc;
//int iQueryCount;
//CString strCurPatId;

////strSelectSQL = "select * from accesstable";
//strSelectSQL = _T("insert into accesstable values(1111,'1','111111','1')");
//rs = CADORecordset(m_pOracleDb);

//m_pOracleDb->Execute(strSelectSQL);
//return false;
//bQuerySucc = rs.Open((LPCTSTR)strSelectSQL);

//iQueryCount = rs.GetRecordCount();

//while(!rs.IsEof())
//{
//	rs.GetFieldValue( _T("ACCCOMMENT"),  strCurPatId);

//	rs.MoveNext();
//}
//rs.Close();
//return true;
}

void CadoTestDlg::OnBnClickedConnecttest()
{
// TODO: 在此添加控件通知处理程序代码
CString strDataSource;
//strDataSource.Format("Provider=OraOLEDB.Oracle.1;Password=%s;Persist Security Info=True;User ID=%s;Data Source=%s",
//	m_strPassword,m_strUserName,m_strDataSource);
strDataSource.Format(_T("Provider=OraOLEDB.Oracle;Data Source=%s;User Id=%s;Password=%s;"),
_T("ORACLE247"),_T("hhpacs"),_T("hhpacs"));
AfxMessageBox(strDataSource);
::CoInitialize(NULL);
::_CommandPtr pCommand=NULL;
//----------------
try
{
HRESULT hr;
::_ConnectionPtr pConn=NULL;
hr = pConn.CreateInstance(__uuidof(::Connection) );
if( SUCCEEDED(hr) )
{
pConn->CursorLocation = ::adUseClient;
//pConn->PutConnectionTimeout(5);
hr = pConn->Open(
_bstr_t(strDataSource),
_bstr_t(_T("")),
_bstr_t(_T("")),
::adModeUnknown/*adModeShareDenyWrite*/);

if(SUCCEEDED(hr))
{
pCommand.CreateInstance(__uuidof(::Command) );
pCommand->ActiveConnection = pConn;
AfxMessageBox(_T("数据连接测试成功!"));
//pConn->Close();
}
else
{
AfxMessageBox(_T("数据连接测试失败!"));
return ;
}
}
else
{
AfxMessageBox(_T("数据连接测试失败!!"));
return ;
}
}
//Error catching
catch(_com_error lError)
{
CString strError = CString((BSTR)lError.Description());
AfxMessageBox(strError);
return ;
}
catch (...)
{
return ;
}//--------------------------

//连接数据库结束-----------------end
if(pCommand!=NULL)
{
::_RecordsetPtr pRec=NULL;
_variant_t vra;
VARIANT *vt1 = NULL;

try
{
//pCommand->CommandText = (_bstr_t)_T("insert into accesstable values(1111,'1','111111','1')")  ;
pCommand->CommandText = (_bstr_t)_T("Select * from accesstable");
pCommand->CommandType = ::adCmdText;
pRec = pCommand->Execute(&vra, vt1, ::adCmdText);
}
catch(_com_error lError)
{
return ;
}
catch (...)
{
return ;
}

CString dbStrLoginName,dbStrTrueName;
if(pRec!=NULL && !pRec->BOF)
{
CString strTemp;
pRec->MoveFirst();

while( !(pRec->AdoEOF) )
{
_variant_t vFieldLoginName,vFieldTrueName;
try
{
vFieldLoginName = pRec->GetCollect(_variant_t("ACCESSID"));
if(vFieldLoginName.vt!=VT_NULL)
vFieldLoginName.ChangeType(VT_BSTR);
vFieldTrueName = pRec->GetCollect(_variant_t("ACCTYPE"));
if(vFieldTrueName.vt!=VT_NULL)
vFieldTrueName.ChangeType(VT_BSTR);
}
//Error catching
catch(_com_error lError)
{
return ;
}
catch (...)
{
return ;
}

dbStrLoginName = vFieldLoginName.bstrVal;
dbStrTrueName = vFieldTrueName.bstrVal;

AfxMessageBox(dbStrLoginName);

//SetDlgItemText(IDC_EDIT3,dbStrTrueName);

pRec->MoveNext();
}
pRec->Close();
}
pCommand = NULL;
}
else
{
return ;
}
}

void CadoTestDlg::OnBnClickedCancel()
{
OnCancel();

}

void CadoTestDlg::OnBnClickedButton1()
{
// TODO: Add your control notification handler code here
// TODO: Add your control notification handler code here
//CString strSelectSQL;
//strSelectSQL = _T("delete from accesstable where ACCESSID = '1111'");
//m_pOracleDb->Execute(strSelectSQL);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: