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

📄 editip.cpp

📁 实现ADO连接SQL SERVER 2000数据库
💻 CPP
字号:
// EditIP.cpp : implementation file
//

#include "stdafx.h"
#include "ADO.h"
#include "EditIP.h"

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

/////////////////////////////////////////////////////////////////////////////
// CEditIP dialog
extern CADOApp theApp;
//extern char strOpen[100];
extern CString mm;
extern char kk[1024];
extern int sum1;
extern CString tmp;
//char strEdit[1024] = "";
char storage[1024] = "";
char* g_totle1;//记录每列的标题
char* g_totle2;//记录每行的数据
int sum = 0;
const int size=20;

CEditIP::CEditIP(CWnd* pParent /*=NULL*/)
	: CDialog(CEditIP::IDD, pParent)
{
	//{{AFX_DATA_INIT(CEditIP)
	m_comb = _T("");
	m_edit = _T("");
	//}}AFX_DATA_INIT
}


void CEditIP::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CEditIP)
	DDX_Control(pDX, IDC_EDIT1, m_edit1);
	DDX_Control(pDX, IDC_COMBO1, m_comb1);
	DDX_CBString(pDX, IDC_COMBO1, m_comb);
	DDX_Text(pDX, IDC_EDIT1, m_edit);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CEditIP, CDialog)
	//{{AFX_MSG_MAP(CEditIP)
	ON_BN_CLICKED(IDC_UPDATE, OnUpdate)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CEditIP message handlers

BOOL CEditIP::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	if(nFlag == 1)
		SetDlgItemText(IDOK, "添加");
	if(nFlag == 2)
		SetDlgItemText(IDOK, "修改");	

	::CoInitialize(NULL);	// COM 初始化
	
	g_totle1 = kk;
	for(int j=0;j<sum1;j++)
	{		
		m_comb1.AddString(g_totle1);
		g_totle1+=20;
	}

/*	memset(strOpen,0,100);
	sprintf(strOpen,"select name from syscolumns where id=(select max(id) from sysobjects where xtype='u' and name='%s')",tmp);
	_variant_t vname;
	int i = 0;
	sum = 0;
	g_totle1 = strEdit;
	try
	{
		m_pRecordset.CreateInstance("ADODB.Recordset");
		//用SQL语句打开数据库“SELECT * FROM 表1”
		m_pRecordset->Open(strOpen, _variant_t((IDispatch*)theApp.m_pConnection,true), adOpenStatic, adLockOptimistic, adCmdText);
		while(!m_pRecordset->adoEOF)
		{
			vname = (_bstr_t)(m_pRecordset->Fields->GetItem(_variant_t("Name"))->Value);
			WideCharToMultiByte(CP_ACP,0,vname.bstrVal,-1,g_totle1,20,0,0);
			m_comb = vname.bstrVal;
			m_comb1.AddString(m_comb);			
			g_totle1+=20;
			sum++;
			m_pRecordset->MoveNext();
		}
	}
	catch(_com_error e)///捕捉异常
	{
		AfxMessageBox("读取数据库失败!");///显示错误信息
	}
	
	m_pRecordset->Close();*/

	memset(storage,0,100);
	g_totle2 = storage;

	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CEditIP::OnOK() 
{
	// TODO: Add extra validation here
	CString cid = mm;

	UpdateData(TRUE);

	if(nFlag == 1) // 添加记录
	{
		g_totle2 = storage;
		CString csInsert;
		csInsert.Format("INSERT INTO %s values(",tmp);
		for(int j=0;j<sum1;j++)
		{
			csInsert +="'";
			csInsert += g_totle2;
			csInsert +="'";
			if(j!=(sum1-1))
				csInsert += ",";
			g_totle2 += size;
		}
		csInsert += ")";
		theApp.m_pConnection->Execute((LPCTSTR)csInsert, NULL, adCmdText);
	}
	if(nFlag == 2) // 修改记录
	{
		if(mm.IsEmpty())
		{
			return;
		}
		g_totle1 = kk;
		g_totle2 = storage;
		CString csInsert;
		csInsert.Format("Update %s set ",tmp);
		for(int j=0;j<sum1;j++)
		{
			csInsert += g_totle1;
			csInsert +="='";
			csInsert += g_totle2;
			csInsert +="'";
			if(j!=(sum1-1))
				csInsert += ",";
			g_totle1 += size;
			g_totle2 += size;
		}
		g_totle1 = kk;
		csInsert += " WHERE ";
		csInsert +=	g_totle1;
		csInsert += "='";
		csInsert += mm;
		csInsert += "'";
		
		theApp.m_pConnection->Execute((LPCTSTR)csInsert, NULL, adCmdText);	
	}

	CDialog::OnOK();
}

void CEditIP::OnUpdate() 
{
	// TODO: Add your control notification handler code here
	int i;

	i = m_comb1.GetCurSel();
	m_edit1.GetWindowText(g_totle2+i*size,20);
}

⌨️ 快捷键说明

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