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

📄 tableadddlg.cpp

📁 ODBC API访问数据库的文章却少之又少。虽然用ODBC访问数据库比较麻烦
💻 CPP
字号:
// TableAddDlg.cpp : 实现文件
//

#include "stdafx.h"
#include "DataManager.h"
#include "TableAddDlg.h"
#include ".\tableadddlg.h"
#include "DbOperator\DbOperator.h"
#define IDC_LIST 1004
#define IDC_EDIT 1005
// CTableAddDlg 对话框
CString DataType[]=
{
	"bigint","binary","bit","char","datetime","decimal","float","image","int","money","nchar","ntext","numeric",
		"nvarchar","real","smalldatetime","smallint","smallmoney","sql_variant","text","timestamp","tinyint",
		"uniqueidentifier","varbinary","varchar"
};
IMPLEMENT_DYNAMIC(CTableAddDlg, CDialog)
CTableAddDlg::CTableAddDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CTableAddDlg::IDD, pParent)
{
	m_listTableAdd.m_hWnd = NULL;
}

CTableAddDlg::~CTableAddDlg()
{
}

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


BEGIN_MESSAGE_MAP(CTableAddDlg, CDialog)
	ON_WM_CREATE()
	ON_BN_CLICKED(IDC_BTN_FIELDADD, OnBnClickedBtnFieldadd)
	ON_BN_CLICKED(IDC_BTN_FIELDDELETE, OnBnClickedBtnFielddelete)
	ON_BN_CLICKED(ID_YES, OnBnClickedYes)
END_MESSAGE_MAP()


// CTableAddDlg 消息处理程序

void CTableAddDlg::OnOK()
{
}

int CTableAddDlg::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
	if (CDialog::OnCreate(lpCreateStruct) == -1)
		return -1;
	CRect rcClient;
	GetClientRect(rcClient);
	if(m_listTableAdd.m_hWnd == NULL)
	{
		m_listTableAdd.Create(WS_CHILD | WS_VISIBLE | WS_BORDER | LVS_REPORT, CRect(10,10,rcClient.Width()-170,rcClient.Height()-100), this, IDC_LIST);
		m_listTableAdd.SetExtendedStyle(LVS_EX_CHECKBOXES | LVS_EX_GRIDLINES | LVS_EX_FULLROWSELECT );
	}

	if(m_listTableAdd.m_hWnd != NULL)
	{
		m_listTableAdd.InsertColumn(1, "操作");
		m_listTableAdd.InsertColumn(1, "主键");
		m_listTableAdd.InsertColumn(2, "列名");
		m_listTableAdd.InsertColumn(3, "数据类型");
		m_listTableAdd.InsertColumn(4, "长度");
		m_listTableAdd.InsertColumn(5, "允许空");
		m_listTableAdd.InsertColumn(6, "默认值");
		m_listTableAdd.SetColumnWidth(0, 40);
		m_listTableAdd.SetColumnWidth(1, 100);//主键
		m_listTableAdd.SetColumnWidth(2, 100);///列名
		m_listTableAdd.SetColumnWidth(3, 100);//类型
		m_listTableAdd.SetColumnWidth(4, 100);//长度
		m_listTableAdd.SetColumnWidth(5, 100);//允许空
		m_listTableAdd.SetColumnWidth(6, 100);//默认值
		CItemEdit* pEdit = new CItemEdit();
		pEdit->Create(WS_CHILD|WS_VISIBLE|WS_BORDER|ES_LEFT, CRect(0,0,0,0), &m_listTableAdd, 1007);
		m_listTableAdd.SetEdit(pEdit, 2);

		pEdit = new CItemEdit();
		pEdit->Create(WS_CHILD|WS_VISIBLE|WS_BORDER|ES_LEFT|ES_NUMBER, CRect(0,0,0,0), &m_listTableAdd, 1009);
		m_listTableAdd.SetEdit(pEdit, 4);

		pEdit = new CItemEdit();
		pEdit->Create(WS_CHILD|WS_VISIBLE|WS_BORDER|ES_LEFT|ES_NUMBER, CRect(0,0,0,0), &m_listTableAdd, 1011);
		m_listTableAdd.SetEdit(pEdit, 6);

		CItemComboBox* pItemComboBox = new CItemComboBox();

		pItemComboBox->Create(WS_CHILD|WS_BORDER|CBS_DROPDOWN, CRect(0,0,0,100), &m_listTableAdd, 1006);	
		pItemComboBox->AddString("*");
		pItemComboBox->AddString("");
		m_listTableAdd.SetComboBox(pItemComboBox, 1);

		pItemComboBox = new CItemComboBox();
		pItemComboBox->Create(WS_CHILD|WS_BORDER|CBS_DROPDOWN|WS_VSCROLL , CRect(0,0,0,200), &m_listTableAdd, 1008);
		for(int i=0; i<25; i++)
		{
			pItemComboBox->AddString(DataType[i]);
		}
		m_listTableAdd.SetComboBox(pItemComboBox, 3);

		pItemComboBox = new CItemComboBox();
		pItemComboBox->Create(WS_CHILD|WS_BORDER|CBS_DROPDOWN, CRect(0,0,0,100), &m_listTableAdd, 1010);
		pItemComboBox->AddString("");
		pItemComboBox->AddString("NOT NULL");
		m_listTableAdd.SetComboBox(pItemComboBox, 5);
	}
	return 0;
}

void CTableAddDlg::OnBnClickedBtnFieldadd()
{
	if(m_listTableAdd.m_hWnd!=NULL)
	{
		int nItems = m_listTableAdd.GetItemCount();
		m_listTableAdd.InsertItem(nItems, "");
	}
}

void CTableAddDlg::OnBnClickedBtnFielddelete()
{
	if(m_listTableAdd.m_hWnd!=NULL)
	{
		int nItems = m_listTableAdd.GetItemCount();
		for(int i=nItems-1; i>=0; i--)
		{
			BOOL bIsChecked = ListView_GetCheckState(m_listTableAdd.m_hWnd, i);
			if(bIsChecked)
			{
				m_listTableAdd.DeleteItem(i);
			}
		}	
	}
}

void CTableAddDlg::OnBnClickedYes()
{
	CString strTableName;
	CString strItem1;
	CString strItem2;
	CString strItem3;
	CString strItem4;
	CString strItem5;
	CString strItem6;
	CString strSQL="";
	CEdit* pEdit = (CEdit*)GetDlgItem(IDC_EDIT_TABLENAME);
	pEdit->GetWindowText(strTableName);
	if(strTableName=="")
	{
		MessageBox("table name can't be null!");
		return;
	}
	//检测表是否已经存在
	CDbOperator DbOperator;
	BOOL bIsExisted = DbOperator.IsTableExisted(strTableName);
	if(bIsExisted)
	{
		MessageBox("the table name is existed! please enter another name!");
		return;
	}


	CHeaderCtrl* pHeaderCtrl = m_listTableAdd.GetHeaderCtrl();
	int nColCount = pHeaderCtrl->GetItemCount();
	int nRowCount = m_listTableAdd.GetItemCount();
	for(int i=0; i<nRowCount; i++)
	{
		strItem1 = m_listTableAdd.GetItemText(i, 1);
		strItem2 =m_listTableAdd.GetItemText(i, 2);
		strItem3 =m_listTableAdd.GetItemText(i, 3);
		strItem4 =m_listTableAdd.GetItemText(i, 4);
		strItem5 =m_listTableAdd.GetItemText(i, 5);
		strItem6 =m_listTableAdd.GetItemText(i, 6);	
		if(strItem3=="bigint")
		{
			int nCount = (int)m_listTableAdd.m_ptrArray.GetCount();
			for(int k=0; k<nCount; k++)
			{
				ItemControl* pItemControl = (ItemControl*)m_listTableAdd.m_ptrArray.GetAt(i);
				CWnd* pWnd = pItemControl->pWnd;
				if(pWnd->GetDlgCtrlID()==1011)
				{
					CItemEdit* pItemEdit = (CItemEdit*)pWnd;
					if(pItemEdit!=NULL)
					{
						pItemEdit->SetReadOnly();
						pItemEdit->SetWindowText("4");
					}
				}
			}
		}
	}


	
}

⌨️ 快捷键说明

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