VS2008 VC++ XML操作
SQL Server 2008中XML应用

8.4.3 SQL Server 2008中XML应用Microsoft 在SQL Server 2000中就推出了与XML相关的功能,并Transact-SQL语言的有关命令中增加了关键字FOR XML和OPENXML,使开发人员可以通过编写Transact-SQL代码来获取XML流形式的查询结果,或者将XML文档格式的数据导入到数据库的基本表中。
SQL Server 2005 不仅扩展了这些关于支持XML的功能,而且推出了一个支持XSD schema验证、基于XQuery的操作和XML索引的本地XML数据类型。
SQL Server 2008在其之前版本支持XML功能的基础之上,做了许多新改进和补充来解决客户在存储和操纵数据库中XML数据时所面临的挑战,不仅程序员能够定义XML数据类型的变量、参数,创建处理XML类型数据的视图、触发器,还能够使用XQuery语言完成对XML文档结点的遍历和数据查询等。
由于篇幅所限,本节只简单介绍在SQL Sever 2008环境中如何将数据库基本表中的数据导出为XML文档,以及如何将XML文档数据导入数据库的基本表。
1、基本表导出为XML文档FOR XML是对标准SQL语言SELECT语句的扩展,数据库管理系统会根据FOR XML使用的模式,返回具有一定格式的XML文档片段以便不同应用程序或者用户之间进行数据交互。
在SQL Server 2008中使用带FOR XML子句的SELECT查询语句就可以从数据库基本表中获得XML数据,而FOR XML子句主要使用RAW和PATH模式。
(1) 单张基本表的导出为介绍方便,我们以第一章介绍的学生表(students)为例,并希望将这张学生表中的数据导出为XML 文档格式的数据,则只要使用表8-7中第3行的SELECT语句即可。
表8-7 将基本表数据导出为XML格式数据注意,表8-7中的第1行和第2行是指定SELECT语句操作的数据库,如果我们在前面已经使用了这个命令,则后面的操作就可以不使用这两行命令了。
Microsoft Visual C++ 2008 发布程序的部署问题

Microsoft Visual C++ 2008 发布程序的部署问题VS2008编译的程序在Windows2008环境上运行时经常出现如下问题:应用程序事件日志如下:上述两个问题都解决后则可能还出现如下问题:注意:此时是调用dll出现问题了,而不是运行主程序出错。
主要问题是“找不到从属程序集Microsoft.VC90.MFC”,解决办法如下:将整个“C:\Application\Microsoft Visual Studio 9.0\VC\ redist\x86\Microsoft.VC90.MFC”拷贝到exe文件所在目录下,如果exe程序所涉及调用的dll与该exe文件不在同一目录,那么须要在dll所在目录也拷贝一份。
详细描述如下:这个问题有好多Blog和Forum已经讨论过了,但都不详尽,在具体的操作过程中还是有许多疑问。
我摘录并整合了许多网络文章,希望能够做个最终了结。
一、VC2005和VC2008编译出来的程序如何发布/lf426/archive/2008/04/12/46885.aspxVC2005和VC2008编译出来的程序放到别人的电脑上为什么有可能无法运行呢?1:Microsoft Visual C++ 2008 Express Edition可以发布软件吗?能!很多人说,因为是Express版,不是Studio,所以只是用来练习语言的,不能发布软件——错!除了没有MFC和ATL,基本上跟 .net 版本是一样的。
发布出来的,是完整的可执行文件。
2:VC 2008 (2005) 发布出来的程序必须附带上他们特定的dll文件吗?不一定。
如果目标系统是个经常升级的系统,微软已经为其打上了所需要的dll文件补丁了,不需要在软件包里面附加特定的dll文件。
特别在Vista系统中,你更是不需要VC8和VC9的dll文件。
但是在一些老版本的系统中,这些文件就是必须的。
3:VC2008和VC2005特定的dll文件是哪些?VC8: msvcm80.dll, msvcp80.dll, msvcr80.dllVC9: msvcm90.dll, msvcp90.dll, msvcr90.dll4:如何部署文件?首先,请选择release版本;在生成可执行文件(exe文件)的时候,会得到相应的部署文件(manifest文件)。
VC2008以资源形式实现多语言版本

无幻潜心成魔.....V C2008以资源形式实现多语言版本分类: 2.1 VC++/MFC 2011-04-13 21:34 2962人阅读 评论(2) 收藏举报越来越多的程序支持多语言切换,或者能自动适应当前系统语言,让自己开发的程序支持多语言不仅可以让自己的程序被国人使用,也能让外国程序爱好者使用。
VC开发多语言程序有多种方法,或读取配置文件,或使用不同资源DLL等等。
这里介绍以资源形式实现多语言版本。
1.打开Visual Studio 2008,新建一个基于对话框工程,名称为LanguageTest,不使用Unicode库 ,资源语言一共有十种(当前操作系统为Windows 7简体中文版),如下图所示:在此选择“中文(简体,中国)”,单击“完成”按钮。
2.在对话框设计界面上,放置一个按钮(ID号IDC_SHOW_BUTTON)、一个静态文本(ID号IDC_TEXT_STATIC,必须改其默认ID号)和一个编辑框(ID号IDC_TEXT_EDIT),资源视图如下所示:可以看到资源视图里面都是简体中文的资源文件,现在在“String Table”字符串表类型下,双击打开其子项“String Table”,默认只有一条字符串,是窗口菜单里的“关于 LanguageTest(&A)...”,如图所示:现在点一下第二行(以黑色外框标志),新建一条字符串(值会默认增长,注意不要与已有的冲突),“标题”是“ID”号所代表的字符串内容,我们增加字符串如下图所示:3.在“解决方案管理器”下双击打开“LanguageTestDlg.cpp”文件,在其初始化函数OnInitDialog()增加如下红色代码:BOOL CLanguageTestDlg::OnInitDialog(){CDialog::OnInitDialog();// 将“关于...”菜单项添加到系统菜单中。
// IDM_ABOUTBOX 必须在系统命令范围内。
Microsoft Visual C++ 2008 发布程序的部署问题

Microsoft Visual C++ 2008 发布程序的部署问题VS2008编译的程序在Windows2008环境上运行时经常出现如下问题:应用程序事件日志如下:上述两个问题都解决后则可能还出现如下问题:注意:此时是调用dll出现问题了,而不是运行主程序出错。
主要问题是“找不到从属程序集Microsoft.VC90.MFC”,解决办法如下:将整个“C:\Application\Microsoft Visual Studio 9.0\VC\ redist\x86\Microsoft.VC90.MFC”拷贝到exe文件所在目录下,如果exe程序所涉及调用的dll与该exe文件不在同一目录,那么须要在dll所在目录也拷贝一份。
详细描述如下:这个问题有好多Blog和Forum已经讨论过了,但都不详尽,在具体的操作过程中还是有许多疑问。
我摘录并整合了许多网络文章,希望能够做个最终了结。
一、VC2005和VC2008编译出来的程序如何发布/lf426/archive/2008/04/12/46885.aspxVC2005和VC2008编译出来的程序放到别人的电脑上为什么有可能无法运行呢?1:Microsoft Visual C++ 2008 Express Edition可以发布软件吗?能!很多人说,因为是Express版,不是Studio,所以只是用来练习语言的,不能发布软件——错!除了没有MFC和ATL,基本上跟 .net 版本是一样的。
发布出来的,是完整的可执行文件。
2:VC 2008 (2005) 发布出来的程序必须附带上他们特定的dll文件吗?不一定。
如果目标系统是个经常升级的系统,微软已经为其打上了所需要的dll文件补丁了,不需要在软件包里面附加特定的dll文件。
特别在Vista系统中,你更是不需要VC8和VC9的dll文件。
但是在一些老版本的系统中,这些文件就是必须的。
3:VC2008和VC2005特定的dll文件是哪些?VC8: msvcm80.dll, msvcp80.dll, msvcr80.dllVC9: msvcm90.dll, msvcp90.dll, msvcr90.dll4:如何部署文件?首先,请选择release版本;在生成可执行文件(exe文件)的时候,会得到相应的部署文件(manifest文件)。
VS2008编译C语言程序详细步骤

Visual Studio 2008(VS2008)编译C语言方法 xp,vista,win7(32,64位)都可运行,效果很好!2011-01-01 13:31大家在学习C语言的时候接触的一般都是VC6.0。
但是VC6.0只能编译C 或者C++,不支持C#,集成度不是很高。
而且界面并不十分友好,不能自动猜测关键字,函数的参数也不能自动标示。
最关键的是,编译的时候纠错信息是全英文的,对于初学者十分不方便。
在演示编译一些简单的C程序时VC6.0可以胜任,但是在进行稍微复杂的程序编辑工作时,VC6.0就有点力不从心了。
现在微软的基于.NET的开发软件已经更新至Visual Studio 2010(VS2010)但是VS2010版本还不是最完善,所以目前为止,最流行的还是Visual Studio 2008(内部代号VC9.0,以下简称VS2008)。
大家接触VS2008一般都是从C#或者VB语言开始的,其实VS2008作为一款集成度很高的编译软件,其本身也是支持C 语言的。
大家可以用它来进行C语言的编译。
相较于VC6.0,VS2008更加的智能,更加人性化。
而且VS2008还支持windows7(VC6.0不支持),所以很多装了windows7的朋友就不用头疼了。
下面,就向大家啊演示如何使用VS2008编译C程序,本文中使用VS2008 professional版本。
1.打开VS2008,这就不用多说了吧2.打开了VS2008的主界面,然后选择,文件→新建→项目弹出如图对话框在项目类型中选择VC++→win32 然后在右侧模板中选择win32控制台应用程序,再在下面输入一个名称(项目名称,不用带.C)选择保存位置后确定好了,弹出个对话框,不管它,下一步接下来注意了,这个对话框中,应用程序类型要选择控制台应用程序,附加选项一定要选中“空项目”。
然后点完成。
然后对话框消失,回到VS主界面,这时会在左侧和右侧多了如图工具栏“解决方案管理器”,如果没有,请点击快捷键(最左边)在源文件上点右键,选择“添加→新建项”。
VS2008简明教程

比尔盖茨创建微软公司,以 BASIC 起家,开发推广了 MSDOS,Windows 系列操作系 统,和形式各样的软件。包括今天的专题 VS2008 开发软件。
Windows 平台(无论是 windows xp,还是 windows 7)已经成为每个人进入信息社会的 必经的平台,包括微软公司在内的诸多软件公司,开发了各种各样的软件(娱乐,休闲,工 作,行业等等软件)。
作为一名学习者 VS2008 的来源是个问题,庆幸的是微软公司提供了试用版和体验版, 可以到微软的官方网站()查询下载。
盗版软件,最好不要使用,至少不要用于商业开发。因为使用盗版软件本身就是损害软 件从业人员的福利和前途,也损害者您自己的前途和福利。尽管,目前很多小型软件公司依 然使用盗版软件做软件开发。
伯兮科技 info@
VS2008 简明教程 version 1.0
写在前面:...............................................................................................................................1 第一章:启动软件...................................................................................................................2 第二章:Hello World ...............................................................................................................2
VS2008教程

for(;;) {
pos1 = pos2 = 0;
if((pos1 = tmpstr.find_first_not_of(delimiters, pos2))
== string::npos)
break;
if((pos2 = tmpstr.find_first_of(delimiters, pos1))
}
return fields.size();
}
函数声明可以放在任何一个调用它的函数之前,而且在调用一个函数之前必须在调用者函数之前定义或声明被调函数。函数的定义只能有一次,如果调用者与被调用者不在同一编译单元,只能在调用者之前添加函数的声明。函数定义只能有一次,函数声明可以有无限次(理论上),这也是头文件的作用,将一批函数的声明放入一个头文件中,在任何需要这些函数声明的地方引用该头文件,以便于维护。
1.1.1.4. 小结
从理论上讲,声明与定义的区别就是:定义描述了内部内容,而声明不表露内部内容,只说明对外接口。例如,类的定义包含了内部成员的声明,而类的声明不包含任何类的内部细节;函数的定义包含了函数体,而函数声明只包括函数的签名;变量的定义可以包含初始化,而变量的声明不可以包含初始化。
class B { public: A* CreateA( void ) const; }
类的定义只给出了类包含了哪些数据(成员变量)和接口(成员函数),但并没有给出实现,程序的实现应该放在原代码文件中。如例程[2-1]中的Point类定义在Point.hpp头文件中,相应的源代码文件Point.cpp的内容如例程[2-4]所示。
// 例程2-2: 类的声明
class Point;
类的说明与实现都可以放在头文件中,因为上层代码需要使用Point的类必须知道当前工程已经定义了这个类。但应该使用定义还是声明呢?使用声明可以的地方使用定义都是可以的,但是,过多得使用定义会使项目编译时间加长,减慢编译速度,细节可参见(@see effective series,item 34)。
Visual C++ 2008 SP1 MFC (OFFICE界面)使用入门

图形画板2008设计文档目录1. 图形后台框架1.1. 基本图形类框架如下:2. 界面框架2.1. 快捷菜单2.2. 主菜单2.3. 工具栏3. 如何创建OFFICE风格的MFC工程4. 如何在工具栏上面添加按钮4.1. 添加菜单主项4.2. 为菜单项添加事件4.3. 添加Ribbon字符4.4. 将按钮添加到工具栏4.4.1. 创建主类别(CMFCRibbonCategory)4.4.2. 创建面板(CMFCRibbonPanel)4.4.3. 添加按钮(CMFCRibbonButton)到面板∙∙1. 图形后台框架1.1. 基本图形类框架如下:2. 界面框架主用应用了Visual Studio 2008 SP1添加的新增强包,可以方面的创建出像OFFCIE2007的Ribbon界面。
Ribbon工具栏是在MainFrm.CPP中的void CMainFrame::InitializeRibbon()生成的整个工具栏CMFCRibbonBar分为2.1. 快捷菜单2.2. 主菜单主菜单按钮CMFCRibbonApplicationButton主菜单CMFCRibbonMainPanel2.3. 工具栏主要分成3层结构:第一层:分类(容器)CMFCRibbonCategory,如图中红色部分所示。
第二层:面板(容器)CMFCRibbonPanel ,如图中红色部分所示。
第三层:元素CMFCRibbonBaseElem,如图中红色部分所示。
先有一个整体的概念~3. 如何创建OFFICE风格的MFC工程以下是创建Visual C++ 2008 SP1创建Office风格的MFC的步骤:首先,新建项目,选择Visual C++ 中的MFC应用程序,输入名称,点击确定接着选择Office的项目类型,MFC的使用选择“在静态库中使用MFC”(这样可以保证在任何Windows系统中都能正确运行,如果选择共享DLL,则只能在有MFC7.0库的机子上正确运行,所以推荐选“在静态库中使用MFC”)接下来的几个步骤都直接按默认即可这里我们先将“导航窗格”的勾去掉(由于本程序没有用到它,所以再此不详细介绍)这里将视图类的基类选为CScrollView,点击完成然后运行一下,基本的雏形就出来啦,简单吧~4. 如何在工具栏上面添加按钮4.1. 添加菜单主项接着继续添加菜单子项,并在属性栏中设置相应的属性,注意Prompt要按照“解释\n标题”这种格式,例如:Prompt绘制一个圆\n画圆做完要记得保存哦4.2. 为菜单项添加事件右键点击需要添加事件的选项,选择添加“事件处理程序”点击“添加编辑”,然后就到视图类的结尾找到这个事件的函数,开始编写事件,可以注意到“函数处理程序名称”是根据“命令名”自动生成的,虽然自己也可以修改,不过还是按默认的比较好,所以也说明上面提到的加入ID时候要根据这样的命名规则来命名。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
VS2008 VC++ XML操作1.msxmlchs.msi的安装安装msxml 4.0 sp2时要注意不要用默认安装,要选择自定义安装(全部安装)才能选择安装SDK,若没有选择安装SDk会发现安装完成后安装目录下什么也没有,而选择了SDK的安装可以在目录下看到LIB INC doc 3个文件夹2.注册dll命令行输入如下命令可以弹出注册成功的对话框cd c:\windows\system32regsvr32 msxml4.dll (也可在运行框中直接输入这句)3.VS2008 设置工具->选项->项目和解决方案->VC++目录Include添加INC的的路径C:\Program Files\MSXML 4.0\INCLibrary添加INC的的路径C:\Program Files\MSXML 4.0\LIB4.VC60 设置Tools->Options... ->Directories tab->Include添加INC的的路径C:\Program Files\MSXML 4.0\INCTools->Options... ->Directories tab->Library添加INC的的路径C:\Program Files\MSXML 4.0\LIB5.新建项目,链接库代码中#include <msxml2.h>VC60 open Project Settings by clicking Settings from the Project menu. Select the Link tab.Append "msxml2.lib" to the Object/library modules: textbox.6.Code1://部分变量无法识别时在前面加命名空间MSXML2::#include<stdio.h>#import<msxml4.dll>using namespace MSXML2;int main(int argc, char* argv[]){MSXML2::IXMLDOMDocument2Ptr pXMLDom;HRESULT hr;CoInitialize(NULL);hr = pXMLDom.CreateInstance(__uuidof(DOMDocument40));if (FAILED(hr)){printf("Failed to CreateInstance on an XML DOM");return NULL;}pXMLDom->preserveWhiteSpace = VARIANT_TRUE;// Create a processing instruction targeted for xml.MSXML2::IXMLDOMProcessingInstructionPtr pi;pi = pXMLDom->createProcessingInstruction("xml", "version='1.0'");if (pi != NULL) {pXMLDom->appendChild(pi);pi.Release();}// Create a processing instruction targeted for xml-stylesheet.pi = pXMLDom->createProcessingInstruction("xml-stylesheet","type='text/xml' href='dom.xsl'");if (pi != NULL) {pXMLDom->appendChild(pi);pi.Release();}// Create a comment for the document.MSXML2::IXMLDOMCommentPtr pc;pc = pXMLDom->createComment("sample xml file created using XML DOM object."); if (pc != NULL) {pXMLDom->appendChild(pc);pc.Release();}// Create the root element (i.e., the documentElement).MSXML2::IXMLDOMElementPtr pe;pe = pXMLDom->createElement("root");// Create a "created" attribute for the root element and// assign the "using dom" character data as the attribute value.MSXML2::IXMLDOMAttributePtr pa;pa = pXMLDom->createAttribute("created");if (pa != NULL){pa->value = "using dom";pe->setAttributeNode(pa);pa.Release();}// Add the root element to the DOM instance.pXMLDom->appendChild(pe);pe.Release();// Next, we will create and add more nodes to the root element// we've just created.// Create an element to hold text content.pe = pXMLDom->createElement("node1");if (pe != NULL){// Add newline + tab for indentation.pXMLDom->documentElement->appendChild(pXMLDom->createTextNode("\n\t")); pe->text = "some character data";pXMLDom->documentElement->appendChild(pe);pe.Release();}// Create an element to hold a CDATA section.pe=pXMLDom->createElement("node2");if (pe != NULL){// Add newline + tab for indentation.pXMLDom->documentElement->appendChild(pXMLDom->createTextNode("\n\t")); MSXML2::IXMLDOMCDATASectionPtr pcd;pcd = pXMLDom->createCDATASection("<some mark-up text>");if (pcd != NULL) {pe->appendChild(pcd);pcd.Release();}pXMLDom->documentElement->appendChild(pe);pe.Release();}// Create an element to hold three empty subelements.pe=pXMLDom->createElement("node3");if (pe != NULL){// Add newline +tab for indentation.pXMLDom->documentElement->appendChild(pXMLDom->createTextNode("\n\t")); MSXML2::IXMLDOMDocumentFragmentPtr pdf;pdf = pXMLDom->createDocumentFragment();pdf->appendChild(pXMLDom->createTextNode("\n\t\t"));pdf->appendChild(pXMLDom->createElement("subNode1"));pdf->appendChild(pXMLDom->createTextNode("\n\t\t"));pdf->appendChild(pXMLDom->createElement("subNode2"));pdf->appendChild(pXMLDom->createTextNode("\n\t\t"));pdf->appendChild(pXMLDom->createElement("subNode3"));pdf->appendChild(pXMLDom->createTextNode("\n\t"));pe->appendChild(pdf);pdf.Release();pXMLDom->documentElement->appendChild(pe);pe.Release();pXMLDom->documentElement->appendChild(pXMLDom->createTextNode("\n")); }printf("Dynamically created DOM:\n%s\n",(LPCSTR)pXMLDom->xml);hr = pXMLDom->save("dynaDom.xml");if (FAILED(hr)){printf("Failed to save DOM to dynaDom.xml\n");}else{printf("DOM saved to dynamDom.xml\n");}if (pXMLDom) pXMLDom.Release();CoUninitialize();return 0;}结果:Dynamically created DOM:<?xml version="1.0"?><?xml-stylesheet type='text/xml' href='dom.xsl'?><!--sample xml file created using XML DOM object.--><root created="using dom"><node1>some character data</node1><node2><![CDATA[<some mark-up text>]]></node2><node3><subNode1/><subNode2/><subNode3/></node3></root>DOM saved to dynamDom.xml7.Code2(未编译验证):#include<stdio.h>#include<msxml2.h>// You might need to add the msxml4/sdk/(inc, lib) directories // to the Tools->Options...->Directories in Visual Studio.//// You might also need to append "msxml2.lib" to the// Project->Settings...->Link->Object/Libray Modules field.int main(int argc, char* argv[]){HRESULT hr;IXMLDOMDocument3 *pXMLDoc = NULL;IXMLDOMParseError * pObjError = NULL;BSTR bstr = NULL;VARIANT_BOOL status;VARIANT vSrc;CoInitialize(NULL);hr = CoCreateInstance(CLSID_DOMDocument40,NULL,CLSCTX_INPROC_SERVER,IID_IXMLDOMDocument3,(void**)&pXMLDoc);if (FAILED(hr)){printf("Failed to CoCreate an instance of an XML DOM\n"); printf("Error code: %x\n", hr);goto clean;}hr = pXMLDoc->put_async(VARIANT_FALSE);if (FAILED(hr)){printf("Failed to set async property\n");goto clean;}hr = pXMLDoc->put_validateOnParse(VARIANT_FALSE);if (FAILED(hr)){printf("Failed to set validateOnParse\n");goto clean;}hr = pXMLDoc->put_resolveExternals(VARIANT_FALSE);if (FAILED(hr)){printf("Failed to disable resolving externals.\n");goto clean;}VariantInit(&vSrc);V_BSTR(&vSrc) = SysAllocString(L"stocks.xml");V_VT(&vSrc) = VT_BSTR;hr = pXMLDoc->load(vSrc, &status);if(status!=VARIANT_TRUE){hr = pXMLDoc->get_parseError(&pObjError);hr = pObjError->get_reason(&bstr);printf("Failed to load DOM from books.xml. %S\n",bstr);goto clean;}hr = pXMLDoc->get_xml(&bstr);printf("stocks.xml:\n%S\n", bstr);clean:if (bstr)SysFreeString(bstr);if (&vSrc)VariantClear(&vSrc);if (pObjError)pObjError->Release();if (pXMLDoc)pXMLDoc->Release();CoUninitialize();return 0;}。