📄 dynamiccreatecolumn.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 + -