MySQL连接方法:
1、安装最新版本的MySQL;
2、确定安装了C++ connector,这是关键,如果用其他语言开发要安装相应的连接器;
3、下面是在项目中调用MySQL API之前需要完成的事:参考:http://www.cnblogs.com/justinzhang/archive/2011/09/23/2185963.html
这一步总结一下需要告诉编译器该项目总共依赖3个东西(具体位置与版本依据自己安装和使用的情况而定):
(1)工程的头文件路径:项目属性页的C/C++->常规->附加包含目录指向:C:\Program Files\MySQL\MySQL Server 5.1\include
(2)工程的连接库路径:项目属性页的链接器->常规->附加库目录指向:C:\Program Files\MySQL\MySQL Server 5.1\lib
(3)工程的连接器的附加依赖项:将项目属性页的链接器->输入->附加依赖项中添加:libmysql.lib
4、在写源文件时还需要:#include <mysql.h>
5、SQL的插入语句中包含单引号时,必须在它之前加一个单引号以表示转义:
inline void Replace(string &str)
{
string::size_type pos=0;
while( (pos=str.find_first_of("'",pos)) != string::npos)
{
str.replace(pos,1,"''");
++pos;
++pos;
}
}
MSXML使用方法:
下载最新版msxml6_x86.msi(当前是6)然后安装;
打开VS2008新建控制台程序,在源文件中添加声明:
#import "msxml6.dll" raw_interfaces_only
(http://leonax.net/p/740/using-msxml-in-c-language/)
然后即可使用其中提供的类,具体通过的代码:
(http://dev.yesky.com/413/2510413_2.shtml)
IXMLDOMDocument //装载文档时
IXMLDOMNode //搜寻结点时
IXMLDOMElement //设置元素属性时
IXMLDOMNode //创建新的结点时
IXMLDOMNode //添加结点时
1、格式
从网上直接copy下来的代码,可能存在格式问题,如空格,大小写,字体等,首先修改完这些东西。
2、CComPtr、CComQIPtr 的声明
COM提供的一个类,智能指针,包含于头文件 atlbase.h 中,只要将该头文件包含在源文件中即可。
http://www.cnblogs.com/lzjsky/archive/2011/01/07/1929701.html
3、CString
包含于文件 atlstr.h 中,也包含于 afxstr.h 中,但是后者要求是MFC应用,纯C/C++应用不可以。
http://msdn.microsoft.com/en-us/library/vstudio/ms174288(v=vs.90).aspx
4、关于CComPtr、CComQIPtr 变量的释放
如果在CoUninitialize()调用之前,没有释放CComPtr与CComQIPtr变量的话,程序会崩溃,所以应该在CoUninitialize()调用之前释放这两个智能指针的变量,
CComPtr的变量可以直接赋NULL,但是CComQIPtr的变量如果赋NULL的话会出现重定义的错误,它的对象应该显示调用Release()函数,当然CComPtr的对象也可以显示调用 Release()函数。
http://blog.csdn.net/bb8cbb8c/article/details/5935098
5、如何对结点(元素)进行操作
IXMLDOMNode 类的属性、接口:http://technet.microsoft.com/zh-cn/subscriptions/ms761386.aspx
6、如何对结点的属性进行操作
IXMLDOMElement 类的接口:http://technet.microsoft.com/zh-CN/library/ms751229
7、如何对XML文件进行操作
IXMLDOMDocument类的属性、接口:http://technet.microsoft.com/zh-cn/subscriptions/ms757878.aspx
8、读取某属性的值时,需要将读取的值放到CComVariant类的对象中,然而为了写到数据库中,我们需要构造SQL语句,所以要将存在CComVariant类的对象中的值取出变成 字符串,转化需要一个曲折CComVariant -> BSTR -> char *:
CComVariant 类的属性和接口:http://technet.microsoft.com/zh-cn/subscriptions/z255545y(v=vs.80).aspx
8.1、CComVariant -> BSTR这个过程还有些小要求:
(1) 调用CComVariant类的接口CopyTo(),将该类对象中的内容复制到BSTR类型的指针所指的对象中,
CopyTo()函数的说明:http://technet.microsoft.com/zh-cn/subscriptions/37k91ewb(v=vs.80).aspx
(2) 在调用CopyTo()之前,需要将CComVariant类的对象变成VT_BSTR类型,调用ChangeType()函数:http://msdn.microsoft.com/en-us/library/5b5x72ya(v=vs.80).aspx;;
且BSTR的指针不可以是空的。
8.2、BSTR -> char *:http://jingyan.baidu.com/article/c1a3101ee590e8de656deb1a.html(使用该连接中的方法一)
8.3、CComVariant -> BSTR -> char *这是一种方法,另一种方法是直接使用bstrVal就可以将CComVariant 的对象转化为BSTR,然后再使用8.2的方法。
CComVariant tmp;
BSTR bStr = tmp.bstrVal ; 即可
9、如何使用IXMLNode类提供的 selectNode() 函数依次读取同名结点,并对其做读写操作:
http://technet.microsoft.com/zh-cn/subscriptions/ms757073.aspx
Windows编程方面:
1、如何依次读取某一文件夹下的所有文件:http://www.cnblogs.com/elucsn/archive/2012/02/24/2366780.html
这里的绝对路径的写法需要注意:"C:\\Users\\Administrator.wangxiaosu-PC\\Desktop\\Test\\Test_Read_File\\Test_Read_File\\lu\\*.*"
#include<string>
#include<vector>
#include<iostream>
#include<fstream>
using namespace std;
void get_filelist(char *foldname)
{
HANDLE file;
WIN32_FIND_DATA fileData;
char line[1024];
wchar_t fn[1000];
mbstowcs(fn,(const char*)foldname,999);
file = FindFirstFile(fn, &fileData);
FindNextFile(file, &fileData);
while(FindNextFile(file, &fileData))
{
wcstombs(line,(const wchar_t*)fileData.cFileName,259);
cout<<line<<endl;
}
}
int main()
{
get_filelist("C:\\Users\\Administrator.wangxiaosu-PC\\Desktop\\Test\\Test_Read_File\\Test_Read_File\\lu\\*.*");
return 0;
}