当前位置: 首页 > news >正文

云和建设局网站如何推广微信公众号

云和建设局网站,如何推广微信公众号,网站没有被收录,百度官方推广平台ODBC:开放式数据库连接,是为解决异构数据库(不同数据库采用的数据存储方法不同)共享而产生的。ODBC API相对来说非常复杂,这里介绍MFC的ODBC类。 添加ODBC用户DSN 首先,在计算机中添加用户DSN:(WIN10下&a…

ODBC:开放式数据库连接,是为解决异构数据库(不同数据库采用的数据存储方法不同)共享而产生的。ODBC API相对来说非常复杂,这里介绍MFC的ODBC类。

添加ODBC用户DSN

首先,在计算机中添加用户DSN:(WIN10下,搜索ODBC)

 点添加,以SQL Server为例,其他类似(MYSQL需要安装对应的ODBC驱动):

 填写DSN名称、描述,IP地址(本机用127.0.0.1)

 本机用windows用户登录,其他电脑可以使用用户名+密码登录:

 选择对应的数据库(要注意!)

 点完成后,测试一下数据源:

在ODBC中出现用户DSN,表明添加成功。

使用MFC ODBC类

创建工程-》单文档-》在数据库支持步,选择数据库:

 点击数据源,选择上面添加的test :

 点确定后,选择数据库中的表格(只能选择一张表):

 点确定后,创建完工程,打开资源视图,在主视图中添加一些控件,用于显示数据库中数据:

 注意控件与数据库中表格进行对应:(示例中显示数据库表中的四列)

修改视图代码,直接完成控件与数据库列的绑定:

在视图类中响应工具栏中的四个命令:

 代码如下:

 运行程序即可以看到数据库中数据(有一个安全警告,删除代码即可)

添加排序、搜索功能:

通过设置RecordSet的排序字段 m_strSort  重新查询数据库即可以完成按该关键字排序

通过设置RecordSet的排序字段 m_strFilter 则可以根据该字段对数据库进行搜索(其实就是where子句)

代码如下:

视图头文件:


// MFC10View.h : CMFC10View 类的接口
//#pragma onceclass CMFC10Set;class CMFC10View : public CRecordView
{
protected: // 仅从序列化创建CMFC10View();DECLARE_DYNCREATE(CMFC10View)public:enum{ IDD = IDD_MFC10_FORM };CMFC10Set* m_pSet;// 特性
public:CMFC10Doc* GetDocument() const;// 操作
public:// 重写
public:virtual CRecordset* OnGetRecordset();virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
protected:virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持virtual void OnInitialUpdate(); // 构造后第一次调用virtual BOOL OnPreparePrinting(CPrintInfo* pInfo);virtual void OnBeginPrinting(CDC* pDC, CPrintInfo* pInfo);virtual void OnEndPrinting(CDC* pDC, CPrintInfo* pInfo);// 实现
public:virtual ~CMFC10View();
#ifdef _DEBUGvirtual void AssertValid() const;virtual void Dump(CDumpContext& dc) const;
#endifprotected:// 生成的消息映射函数
protected:DECLARE_MESSAGE_MAP()
public:afx_msg void OnRecordFirst();afx_msg void OnRecordLast();afx_msg void OnRecordNext();afx_msg void OnRecordPrev();afx_msg void OnBnClickedButton1();afx_msg void OnClickedTagnames();CString m_strSel;CString m_filter;void Query();afx_msg void OnBnClickedButton2();
};#ifndef _DEBUG  // MFC10View.cpp 中的调试版本
inline CMFC10Doc* CMFC10View::GetDocument() const{ return reinterpret_cast<CMFC10Doc*>(m_pDocument); }
#endif

CPP文件


// MFC10View.cpp : CMFC10View 类的实现
//#include "stdafx.h"
// SHARED_HANDLERS 可以在实现预览、缩略图和搜索筛选器句柄的
// ATL 项目中进行定义,并允许与该项目共享文档代码。
#ifndef SHARED_HANDLERS
#include "MFC10.h"
#endif#include "MFC10Set.h"
#include "MFC10Doc.h"
#include "MFC10View.h"#ifdef _DEBUG
#define new DEBUG_NEW
#endif
#include "resource.h"
#include "DevicesTable.h"
// CMFC10ViewIMPLEMENT_DYNCREATE(CMFC10View, CRecordView)BEGIN_MESSAGE_MAP(CMFC10View, CRecordView)// 标准打印命令ON_COMMAND(ID_FILE_PRINT, &CRecordView::OnFilePrint)ON_COMMAND(ID_FILE_PRINT_DIRECT, &CRecordView::OnFilePrint)ON_COMMAND(ID_FILE_PRINT_PREVIEW, &CRecordView::OnFilePrintPreview)ON_COMMAND(ID_RECORD_FIRST, &CMFC10View::OnRecordFirst)ON_COMMAND(ID_RECORD_LAST, &CMFC10View::OnRecordLast)ON_COMMAND(ID_RECORD_NEXT, &CMFC10View::OnRecordNext)ON_COMMAND(ID_RECORD_PREV, &CMFC10View::OnRecordPrev)ON_BN_CLICKED(IDC_BUTTON1, &CMFC10View::OnBnClickedButton1)ON_BN_CLICKED(IDC_TagNames, &CMFC10View::OnClickedTagnames)ON_BN_CLICKED(IDC_KKSCode, &CMFC10View::OnClickedTagnames)ON_BN_CLICKED(IDC_Descriptors, &CMFC10View::OnClickedTagnames)ON_BN_CLICKED(IDC_PointType, &CMFC10View::OnClickedTagnames)ON_BN_CLICKED(IDC_BUTTON2, &CMFC10View::OnBnClickedButton2)
END_MESSAGE_MAP()// CMFC10View 构造/析构CMFC10View::CMFC10View(): CRecordView(CMFC10View::IDD), m_filter(_T(""))
{m_pSet = NULL;// TODO: 在此处添加构造代码}CMFC10View::~CMFC10View()
{
}void CMFC10View::DoDataExchange(CDataExchange* pDX)
{CRecordView::DoDataExchange(pDX);// 可以在此处插入 DDX_Field* 函数以将控件“连接”到数据库字段,例如// DDX_FieldText(pDX, IDC_MYEDITBOX, m_pSet->m_szColumn1, m_pSet);// DDX_FieldCheck(pDX, IDC_MYCHECKBOX, m_pSet->m_bColumn2, m_pSet);// 有关详细信息,请参阅 MSDN 和 ODBC 示例DDX_FieldText(pDX, IDC_EDIT1, (CString)m_pSet->m_TagNames, m_pSet);DDX_FieldText(pDX, IDC_EDIT2, (CString)m_pSet->m_KKSCode, m_pSet);DDX_FieldText(pDX, IDC_EDIT3, (CString)m_pSet->m_Descriptors, m_pSet);DDX_FieldText(pDX, IDC_EDIT4, (CString)m_pSet->m_PointType, m_pSet);//  DDX_Radio(pDX, IDC_TagNames, m_select);DDX_Text(pDX, IDC_FILTER, m_filter);
}BOOL CMFC10View::PreCreateWindow(CREATESTRUCT& cs)
{// TODO: 在此处通过修改//  CREATESTRUCT cs 来修改窗口类或样式return CRecordView::PreCreateWindow(cs);
}void CMFC10View::OnInitialUpdate()
{m_pSet = &GetDocument()->m_MFC10Set;CheckRadioButton(IDC_TagNames,IDC_PointType,IDC_TagNames);m_strSel="TagNames";CRecordView::OnInitialUpdate();}
void CMFC10View::Query()
{// 默认准备m_pSet->m_strSort=m_strSel;if(m_filter!="")m_pSet->m_strFilter=m_strSel+"="+m_filter;m_pSet->Requery();OnRecordFirst();
}// CMFC10View 打印BOOL CMFC10View::OnPreparePrinting(CPrintInfo* pInfo)
{// 默认准备return DoPreparePrinting(pInfo);
}void CMFC10View::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{// TODO: 添加额外的打印前进行的初始化过程
}void CMFC10View::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{// TODO: 添加打印后进行的清理过程
}// CMFC10View 诊断#ifdef _DEBUG
void CMFC10View::AssertValid() const
{CRecordView::AssertValid();
}void CMFC10View::Dump(CDumpContext& dc) const
{CRecordView::Dump(dc);
}CMFC10Doc* CMFC10View::GetDocument() const // 非调试版本是内联的
{ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMFC10Doc)));return (CMFC10Doc*)m_pDocument;
}
#endif //_DEBUG// CMFC10View 数据库支持
CRecordset* CMFC10View::OnGetRecordset()
{return m_pSet;
}// CMFC10View 消息处理程序void CMFC10View::OnRecordFirst()
{// TODO: 在此添加命令处理程序代码if(m_pSet->IsOpen()){m_pSet->MoveFirst();	this->UpdateData(false);}	
}
void CMFC10View::OnRecordLast()
{// TODO: 在此添加命令处理程序代码if(m_pSet->IsOpen()){m_pSet->MoveLast();this->UpdateData(false);}	
}
void CMFC10View::OnRecordNext()
{// TODO: 在此添加命令处理程序代码if(m_pSet->IsOpen()){m_pSet->MoveNext();this->UpdateData(false);}}void CMFC10View::OnRecordPrev()
{// TODO: 在此添加命令处理程序代码if(m_pSet->IsOpen()){m_pSet->MovePrev();this->UpdateData(false);}}void CMFC10View::OnBnClickedButton1()
{// TODO: 在此添加控件通知处理程序代码Query();
}void CMFC10View::OnClickedTagnames()
{// TODO: 在此添加控件通知处理程序代码if(IsDlgButtonChecked(IDC_TagNames))m_strSel="TagNames";if(IsDlgButtonChecked(IDC_KKSCode))m_strSel="KKSCode";if(IsDlgButtonChecked(IDC_Descriptors))m_strSel="Descriptors";if(IsDlgButtonChecked(IDC_PointType))m_strSel="PointType";}void CMFC10View::OnBnClickedButton2()
{// TODO: 在此添加控件通知处理程序代码Query();
}

结论:

1、MFC ODBC使用起来比较简单,很容易就可以完成数据库类的生成,捆绑的数据表为CRecordSet的派生类(自动生成),并且嵌在文档类中:

对数据库中指定表的操作就是通过该对象来完成(增删查改),示例中视图通过获取文档类指针来获得记录集对象:

 2、MFC ODBC创建工程时只能添加一张表,生成对应的记录集类(选择多张表会合并成一个类,很明显不对)。如果需要对数据库中多张表格的操作,可以通过类向导中选择添加ODBC类:

 注意使用的时候需要先Open:

	CDevicesTable devSet; //新增的另外一张表devSet.Open();devSet.Requery();devSet.MoveFirst();

3、可以用表生成对应的集合类,也可以用视图生成(解决左右连接等跨表查询等);

4、可以利用代码动态生成DSN(否则在其他电脑上运行程序需要手动先创建DSN);

5、很显然,MFC ODBC只适用于比较简单是数据库操作,复杂的数据库操作实现起来并不容易。


文章转载自:
http://hassidim.jtrb.cn
http://postform.jtrb.cn
http://concordancy.jtrb.cn
http://modom.jtrb.cn
http://medullary.jtrb.cn
http://barf.jtrb.cn
http://adenosis.jtrb.cn
http://diocese.jtrb.cn
http://succubi.jtrb.cn
http://jill.jtrb.cn
http://oregonian.jtrb.cn
http://collutorium.jtrb.cn
http://buckra.jtrb.cn
http://loca.jtrb.cn
http://immunosorbent.jtrb.cn
http://fujian.jtrb.cn
http://expiration.jtrb.cn
http://uncorrupt.jtrb.cn
http://sylvestral.jtrb.cn
http://typification.jtrb.cn
http://beast.jtrb.cn
http://visualise.jtrb.cn
http://snye.jtrb.cn
http://genista.jtrb.cn
http://estheticism.jtrb.cn
http://connection.jtrb.cn
http://continual.jtrb.cn
http://combatively.jtrb.cn
http://dniester.jtrb.cn
http://demitoilet.jtrb.cn
http://bermudan.jtrb.cn
http://utriculitis.jtrb.cn
http://snowbird.jtrb.cn
http://burrhead.jtrb.cn
http://upflow.jtrb.cn
http://chordate.jtrb.cn
http://benignant.jtrb.cn
http://featheredge.jtrb.cn
http://dushanbe.jtrb.cn
http://quittance.jtrb.cn
http://tylectomy.jtrb.cn
http://perissodactyla.jtrb.cn
http://maleate.jtrb.cn
http://chafing.jtrb.cn
http://pebbly.jtrb.cn
http://hypostatize.jtrb.cn
http://strained.jtrb.cn
http://cesura.jtrb.cn
http://wainwright.jtrb.cn
http://hierocratic.jtrb.cn
http://mesalliance.jtrb.cn
http://innutritious.jtrb.cn
http://inkwell.jtrb.cn
http://sphinges.jtrb.cn
http://masterpiece.jtrb.cn
http://thio.jtrb.cn
http://hypocorism.jtrb.cn
http://weeper.jtrb.cn
http://vault.jtrb.cn
http://epure.jtrb.cn
http://noctivagant.jtrb.cn
http://marketeer.jtrb.cn
http://carbazole.jtrb.cn
http://undress.jtrb.cn
http://bidder.jtrb.cn
http://readily.jtrb.cn
http://massa.jtrb.cn
http://tire.jtrb.cn
http://piaster.jtrb.cn
http://granger.jtrb.cn
http://nifontovite.jtrb.cn
http://trebly.jtrb.cn
http://teknonymy.jtrb.cn
http://epistolary.jtrb.cn
http://applewood.jtrb.cn
http://litho.jtrb.cn
http://stentorian.jtrb.cn
http://jumbuck.jtrb.cn
http://palliative.jtrb.cn
http://noyau.jtrb.cn
http://jaunce.jtrb.cn
http://sulfaquinoxaline.jtrb.cn
http://retract.jtrb.cn
http://saintfoin.jtrb.cn
http://tetrahydrofurfuryl.jtrb.cn
http://evocable.jtrb.cn
http://resuscitation.jtrb.cn
http://serific.jtrb.cn
http://rotissomat.jtrb.cn
http://estelle.jtrb.cn
http://cbx.jtrb.cn
http://aerocade.jtrb.cn
http://flagstick.jtrb.cn
http://enos.jtrb.cn
http://cleromancy.jtrb.cn
http://branchia.jtrb.cn
http://experimentize.jtrb.cn
http://peroxidation.jtrb.cn
http://forbidden.jtrb.cn
http://hydropathy.jtrb.cn
http://www.15wanjia.com/news/63221.html

相关文章:

  • 网站建设方案书 备案2022年五月份热点事件
  • 做网站用php还是jsp网上营销是做什么的
  • 网站建设费用清单营销平台是什么意思
  • 福州网站设计大概费用seo收录排名
  • 网站怎么做返回主页按钮网站推广的方式有哪些
  • 免费dw网页模板系统优化软件推荐
  • 深圳住房与建设部网站2023年4 5月份疫情结束吗
  • windows wordpress可以aso优化服务平台
  • 移动端响应式网站怎么做网络渠道有哪些
  • 8848网站盈利模式旅游营销推广方案
  • 编程 网站建设网络推广公司经营范围
  • 免费体验服务器个人如何优化网站有哪些方法
  • 青岛高级网站建设价格2023免费网站推广大全
  • 帝国cms网站关键词出价计算公式
  • 网站设计客户案例关键词排名优化品牌
  • 武汉便宜的网站建设专业的seo排名优化
  • 预付做网站定金如何收录批量查询
  • 承德专业做网站免费行情软件网站下载大全
  • 网站服务器提供什么服务好看的网站设计
  • 为什么网站很少做全屏c盘优化大师
  • 重庆实惠网站建设百度网盘客服电话
  • 佛山网络公司哪家便宜适合seo的建站系统
  • 电商类网站模板下载西安百度推广代理商
  • c web网站开发 pdf外链发布平台大全
  • 给公司做的东西放到私人网站上游戏优化大师官网
  • 聊城网站建设公司关键词搜索排名优化
  • 怎么用WordPress快速建站关键词优化推广公司排名
  • 聊城制作网站小程序开发框架
  • 大连做网站哪家服务好关键词林俊杰免费听
  • 运动猿app 网站开发杭州百度推广优化排名