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

📄 serverview.cpp

📁 面向软件工程的Visual C++网络程序开发
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// ServerView.cpp : implementation of the CServerView class
//

#include "stdafx.h"
#include "Server.h"

#include "ServerDoc.h"
#include "ServerView.h"

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

/////////////////////////////////////////////////////////////////////////////
// CServerView

IMPLEMENT_DYNCREATE(CServerView, CEditView)

BEGIN_MESSAGE_MAP(CServerView, CEditView)
	//{{AFX_MSG_MAP(CServerView)
	ON_WM_TIMER()
	//}}AFX_MSG_MAP
	// Standard printing commands
	ON_COMMAND(ID_FILE_PRINT, CEditView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_DIRECT, CEditView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_PREVIEW, CEditView::OnFilePrintPreview)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CServerView construction/destruction

CServerView::CServerView()
{
	// TODO: add construction code here
    m_fConnected = FALSE;
}

CServerView::~CServerView()
{
}

BOOL CServerView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	BOOL bPreCreated = CEditView::PreCreateWindow(cs);
	cs.style &= ~(ES_AUTOHSCROLL|WS_HSCROLL);	// Enable word-wrapping

	return bPreCreated;
}

/////////////////////////////////////////////////////////////////////////////
// CServerView drawing

void CServerView::OnDraw(CDC* pDC)
{
	CServerDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	// TODO: add draw code for native data here
}

/////////////////////////////////////////////////////////////////////////////
// CServerView printing

BOOL CServerView::OnPreparePrinting(CPrintInfo* pInfo)
{
	// default CEditView preparation
	return CEditView::OnPreparePrinting(pInfo);
}

void CServerView::OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo)
{
	// Default CEditView begin printing.
	CEditView::OnBeginPrinting(pDC, pInfo);
}

void CServerView::OnEndPrinting(CDC* pDC, CPrintInfo* pInfo)
{
	// Default CEditView end printing
	CEditView::OnEndPrinting(pDC, pInfo);
}

/////////////////////////////////////////////////////////////////////////////
// CServerView diagnostics

#ifdef _DEBUG
void CServerView::AssertValid() const
{
	CEditView::AssertValid();
}

void CServerView::Dump(CDumpContext& dc) const
{
	CEditView::Dump(dc);
}

CServerDoc* CServerView::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CServerDoc)));
	return (CServerDoc*)m_pDocument;
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CServerView message handlers

void CServerView::DisplayString(LPCTSTR lpszMessage)
{
	CString strTemp = lpszMessage;
	int len = GetWindowTextLength();
	GetEditCtrl().SetSel(len,len);
	GetEditCtrl().ReplaceSel(strTemp);

}

void CServerView::DisplayStringWithCRLF(LPCTSTR lpszMessage)
{
	CString strTemp = lpszMessage;
	strTemp += _T("\r\n");
	int len = GetWindowTextLength();
	GetEditCtrl().SetSel(len,len);
	GetEditCtrl().ReplaceSel(strTemp);

}

void CServerView::OnInitialUpdate() 
{
	CEditView::OnInitialUpdate();
	
	// TODO: Add your specialized code here and/or call the base class
/*	_bstr_t source("Provider=SQLOLEDB.1;Password=971277;Persist Security Info=True;User ID=sa;Initial Catalog=FALCON_JXC;Data Source=192.168.0.240");//source("Driver={SQL Server};Server=ZRW;Uid=sa;Pwd=971277;Database=FALCON_JXC");
	_bstr_t user("sa");
	_bstr_t pwd("971277");

	HRESULT hr;
	try{
		hr = m_connection.CreateInstance(_uuidof(Connection));
		if(SUCCEEDED(hr))
			hr = m_connection->Open("Provider=SQLOLEDB.1;Password=971277;Persist Security Info=False;User ID=sa;Initial Catalog=FALCON_JXC;Data Source=ZRW","","",-1);//(source, user, pwd, 16);
		if(SUCCEEDED(hr))
			hr = m_recordset.CreateInstance(_uuidof(Recordset));
		if(SUCCEEDED(hr))
			m_fConnected = TRUE;
		else 
			m_fConnected = FALSE;
	}
	catch (_com_error &e){
	   MessageBox(e.ErrorMessage()); 
	   m_fConnected = FALSE;
	}
	if(!m_fConnected) MessageBox("ADO数据源初始化失败!");
	else  m_strSource = (const char * )source;*/

	_bstr_t source("Driver={SQL Server};Server=FLYGONE\\S;Uid=sa;Pwd=971277;Database=FALCON_JXC");
	_bstr_t user("sa");
	_bstr_t pwd("971277");

	HRESULT hr;
	try{
		hr = m_connection.CreateInstance(_uuidof(Connection));
		if(SUCCEEDED(hr))
			hr = m_connection->Open(source, user, pwd, 16);
		if(SUCCEEDED(hr))
			hr = m_recordset.CreateInstance(_uuidof(Recordset));
		if(SUCCEEDED(hr))
			m_fConnected = TRUE;
		else 
			m_fConnected = FALSE;
	}
	catch (_com_error &e){
	   MessageBox(e.ErrorMessage()); 
	   m_fConnected = FALSE;
	}
	if(!m_fConnected) MessageBox("ADO数据源初始化失败!");
	else  m_strSource = (const char * )source;
	SetTimer(1, 20000, NULL);
 	
}


BOOL CServerView::OpenCurRecordset(CString strTableName)
{
	if(!m_fConnected) 
		return FALSE;
	if(strTableName.IsEmpty()) 
		return FALSE;

	HRESULT hr;
	CString strQuery;
	strQuery=strTableName;
	_bstr_t query = strQuery;
	_bstr_t source =  m_strSource;
	try{
		hr = m_recordset->Open(query, source, adOpenDynamic, adLockOptimistic, adCmdText);
	}
	catch (_com_error &e){
		m_recordset->Close(); 
	    return FALSE;
	}
	return (SUCCEEDED(hr));
}

CString CServerView::VariantToCtring(VARIANT var)
{
	CString strValue;
	_variant_t var_t;
	_bstr_t bst_t;
	time_t cur_time;
	CTime time_value;
	COleCurrency var_currency;

	switch(var.vt){
		case VT_EMPTY:
			strValue = _T(""); 
			break;
		case VT_UI1: 
			strValue.Format("%d", var.bVal); 
			break;  
		case VT_I2: 
			strValue.Format("%d", var.iVal); 
			break;  
		case VT_I4: 
			strValue.Format("%d", var.lVal); 
			break; 
		case VT_R4: 
			strValue.Format("%f", var.fltVal); 
			break;  
		case VT_R8: 
			strValue.Format("%f", var.dblVal); 
			break;  
		case VT_CY: 
			var_currency = var;
			strValue = var_currency.Format(0);
			break;  
		case VT_BSTR:
			var_t = var;
			bst_t = var_t;
			strValue.Format("%s", (const char *)bst_t); 
			break;  
		case VT_NULL: 
			strValue = _T(""); 
			break;  
		case VT_DATE: 
			cur_time = var.date;
			time_value = cur_time;
			strValue = time_value.Format("%A, %B %d, %Y");
			break;  
		case VT_BOOL: 
			strValue.Format("%d", var.boolVal); 
			break;  
		default: 
			strValue = _T(""); 
			break;
	}
	return strValue;
}

BOOL CServerView::InsertRow(CString strTableName, CStringArray &saValues)
{
	int nColNum = 0;
	if(!m_fConnected) return FALSE;
	if(strTableName.IsEmpty()) return FALSE;
	if(0 == (nColNum = saValues.GetSize())) return FALSE;
	//
	HRESULT hr;
	Fields* fields = NULL;
	Field* field = NULL;
	VARIANT varValue;
	VARIANT varCount;
	DataTypeEnum data_type;
	varCount.vt = VT_I4;

	CString strQuery;
	strQuery.Format("select * from [%s]", strTableName);
	if(!OpenCurRecordset(strQuery)) return FALSE;
	try{
		hr = m_recordset->AddNew(); 
		hr = m_recordset->get_Fields(&fields);
		for(int i=0;i<nColNum;i++){			
			varCount.lVal = i;
			hr = fields->get_Item(varCount, &field);			
			field->get_Type(&data_type); 
			if(!ConstructVar(saValues.GetAt(i), data_type, &varValue)) return FALSE;
			hr = field->put_Value(varValue);
		}
		m_recordset->Update(); 
		fields->Release();
		field->Release();
	    m_recordset->Close(); 

	}
	catch (_com_error &e){
	   MessageBox(e.ErrorMessage()); 
	   m_recordset->Close(); 
	   return FALSE;
	}
	
	return (SUCCEEDED(hr));
}

BOOL CServerView::UpDateRow(CString strTableName, CStringArray &saValues)
{
	int nColNum = 0;
	if(!m_fConnected) return FALSE;
	if(strTableName.IsEmpty()) return FALSE;
	if(0 == (nColNum = saValues.GetSize())) return FALSE;
	//
	HRESULT hr;
	Fields* fields = NULL;
	Field* field = NULL;
	VARIANT varValue;
	VARIANT varCount;
	DataTypeEnum data_type;
	varCount.vt = VT_I4;

	CString strQuery;
//	strQuery.Format("select * from [%s]", strTableName);
	if(!OpenCurRecordset(strTableName)) return FALSE;
	try{
//		hr = m_recordset->AddNew(); 
		hr = m_recordset->get_Fields(&fields);
		for(int i=0;i<nColNum;i++){			
			varCount.lVal = i;
			hr = fields->get_Item(varCount, &field);			
			field->get_Type(&data_type); 

⌨️ 快捷键说明

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