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

📄 dynamiccreatecolumn.cpp

📁 动态创建数据库
💻 CPP
字号:
// DynamicCreateColumn.cpp : implementation file
//

#include "stdafx.h"
#include "test3.h"
#include "DynamicCreateColumn.h"
#include "DynamicCreateTable.h"

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

/////////////////////////////////////////////////////////////////////////////
// CDynamicCreateColumn dialog


CDynamicCreateColumn::CDynamicCreateColumn(CWnd* pParent /*=NULL*/)
	: CDialog(CDynamicCreateColumn::IDD, pParent)
{
	//{{AFX_DATA_INIT(CDynamicCreateColumn)
	m_strColumnName = _T("");
	//}}AFX_DATA_INIT
}


void CDynamicCreateColumn::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDynamicCreateColumn)
	DDX_Control(pDX, IDC_SELECTDATABASE, m_ctrlSelectDatabase);
	DDX_Control(pDX, IDC_SELECTTABLE, m_ctrlSelectTable);
	DDX_Control(pDX, IDC_EDITTOADD, m_ctrlEditToAdd);
	DDX_Control(pDX, IDC_BEGINCREATION, m_ctrlBeginCreation);
	DDX_Control(pDX, IDC_ADDEDLIST, m_ctrlAddedList);
	DDX_Control(pDX, IDC_SINGLEDELETE, m_ctrlSingleDelete);
	DDX_Control(pDX, IDC_TOADDLIST, m_ctrlToAddList);
	DDX_Text(pDX, IDC_COLUMNNAME, m_strColumnName);
	DDX_CBString(pDX, IDC_SELECTDATABASE, m_strSelectDatabase);
	DDX_CBString(pDX, IDC_SELECTTABLE, m_strSelectTable);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CDynamicCreateColumn, CDialog)
	//{{AFX_MSG_MAP(CDynamicCreateColumn)
	ON_CBN_SELCHANGE(IDC_SELECTTABLE, OnSelchangeSelecttable)
	ON_CBN_SELCHANGE(IDC_SELECTDATABASE, OnSelchangeSelectdatabase)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDynamicCreateColumn message handlers

//对表
void CDynamicCreateColumn::OnSelchangeSelecttable() 
{
	// TODO: Add your control notification handler code here



	
}

BOOL CDynamicCreateColumn::OnInitDialog() 
{
	CDialog::OnInitDialog();
	// TODO: Add extra initialization here
	::CoInitialize(NULL);
    m_hrConn=pConn.CreateInstance(_uuidof(Connection));
	pRst.CreateInstance(_uuidof(Recordset)); 
	pComm.CreateInstance(_uuidof(Command));
	//清空所有列表
	m_ctrlAddedList.ResetContent();
	m_ctrlToAddList.ResetContent();
	m_ctrlSelectDatabase.ResetContent();
	m_ctrlSelectTable.ResetContent();

    m_ctrlBeginCreation.EnableWindow(FALSE);
	ShowDatabaseList();
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CDynamicCreateColumn::ShowDatabaseList()
{
    UpdateData();
	ASSERT(m_ctrlSelectDatabase.GetCount() == 0);
	
    HRESULT tempHr=m_hrConn;
	CString strConnection; 
	CString tempstr;
	try 
	{ 
		if(SUCCEEDED(tempHr)) 
		{ 
		strConnection.Format("Provider=SQLOLEDB.1;Password=sa;Persist Security Info=True;\
			User ID=sa;Data Source=."); //ERIC-PC
		
		tempHr= pConn->Open((_bstr_t)strConnection,"sa","sa",adModeUnknown); 
		pRst =pConn->OpenSchema(adSchemaCatalogs); 
		
		while(!(pRst->ADOEOF)) 
		{ 
            //获取数据库名称
            _bstr_t database_name= pRst->Fields->GetItem("CATALOG_NAME")->Value;
			
			tempstr.Format("%s",(LPCSTR)database_name);
			//剔除系统数据库
			if(tempstr!="master"&&tempstr!="msdb"&&tempstr!="tempdb"&&tempstr!="model")
				m_ctrlSelectDatabase.AddString(tempstr);
			
			
			pRst->MoveNext(); 
		} 
		pRst->Close(); 
		} 
		pConn->Close(); 
	}
	catch (_com_error &e)//捕捉异常
	{
		AfxMessageBox(e.Description()); 
	}
	
    UpdateData(FALSE);

}

void CDynamicCreateColumn::ShowTableList()
{

}

//对数据库
void CDynamicCreateColumn::OnSelchangeSelectdatabase() 
{
	// TODO: Add your control notification handler code here
	UpdateData();
	// 在这里显示数据库中已经存在的表
	//清空所有列表
	m_ctrlAddedList.ResetContent();
	m_ctrlToAddList.ResetContent();
	m_ctrlSelectTable.ResetContent();

	
	CString strConnection; 
	CString tempstr;
	
	strConnection.Format("Provider=SQLOLEDB.1;Password=sa;Persist Security Info=True;\
		User ID=sa;Initial Catalog=%s;Data Source=.",m_strSelectDatabase); //ERIC-PC
    //Provider=SQLOLEDB.1;Password=sa;Persist Security Info=True;User ID=sa;
	//Initial Catalog=master;Data Source=ERIC-PC
	try
	{
		pConn->Open((_bstr_t)strConnection,"sa","sa",adModeUnknown);
		
		pRst =pConn->OpenSchema(adSchemaTables);
		while(!(pRst->ADOEOF)) 	
		{
			//获取表格摘要//测试使用
			//			_bstr_t table_schema = pRst->Fields->GetItem("TABLE_SCHEMA")->Value; 
			
			//获取表格目录//测试使用
			//			_bstr_t table_catalog = pRst->Fields->GetItem("TABLE_CATALOG")->Value; 
			
			//获取表格 
			_bstr_t table_name = pRst->Fields->GetItem("TABLE_NAME")->Value; 
			
			//获取表格类型 
			_bstr_t table_type = pRst->Fields->GetItem("TABLE_TYPE")->Value; 
			
			//过滤一下,只输出表格名称,其他的省略 
			if(strcmp(((LPCSTR)table_type),"TABLE")==0)
			{ 
				//				m_ctrlSearchState.SetWindowText("搜索结果显示");
				//				UpdateData(FALSE);
				//在下面开始显示表名
				tempstr.Format("%s",(LPCSTR)table_name); 
                m_ctrlSelectTable.AddString(tempstr);
				
			} 
			pRst->MoveNext(); 
		}
		pRst->Close();
		pConn->Close();
		
		//		m_ctrlTableName.EnableWindow(TRUE);
		m_ctrlEditToAdd.EnableWindow(TRUE);
		
	}
	catch (_com_error &e)//捕捉异常
	{
		AfxMessageBox(e.Description()); 
	}
    UpdateData(FALSE);
	
}

⌨️ 快捷键说明

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