这几天帮一个朋友修改一个产品,这个产品是在Windows下通过C++的mysql++去访问mysql数据库,同时,该产品的数据需要支持多语 言(中文、日文、韩文、法文等)。而mysql对于多语言的支持采用的字符集是utf8,但是,在windows下的vs中是采用unicode,这样就 需要进行字符集的转化。而该产品的代码中,又使用了STL的string,这样就更麻烦了。
继续阅读 »
在Windows下mysql++支持UTF8
mysql++如何设置字符集
在用mysql++连接mysql时,发现读出的数据有乱码,然后看看mysql++的源码,发现mysql++提供有设置字符集的接口,方法如下所示:
继续阅读 »
14. MYSQL++之SSQLS(原理解析)
从之前所介绍的SSQLS的介绍中我们可以感受到,SSQLS的精髓应该在sql_create_#这个宏,他所创建出来的这个结构体将会是突破的关键,所以我将会从以下顺序入手。
继续阅读 »
13. MYSQL++之SSQLS(基本用法篇)
1. 综述
终于来到了SSQLS( Specialized SQL Structure),照我看来这是一个很类似于Hibernate的功能。也就是说,通过SSQLS可以将一张表完全对应到一个C++结构体中,然后只要对于这个结构体进行操作,同时再加入到对应的mysqlpp:: Query对应的方法中,我们就可以执行对应的SQL语句。
继续阅读 »
12. MYSQL++之Template Query
1. 什么是Template Query
在我们实际的编程过程中,我们很容易碰到printf这类需要在运行时来决定到底打印出什么的函数,例如
1 |
printf(“hello %s”, sth); |
在这个例子中,那个%s占位符表明了我们以后希望打印的内容格式和位置。同样,在我们书写SQL语句的时候,也会出现这样的情况,例如
继续阅读 »
11. MYSQL++ 之 Quoting 与 Escaping
1. 综述
其实一看到这两个单词的时候我有点莫名其妙,可能英语没有学好,我的理解就是quoting是“引用”的意思,而Escaping是“逃脱”的意思。后来在看到了作者的TUTORIAL之后才大致明白了两者的意思。
继续阅读 »
10. MYSQL++ 之 DbDriver
1. 综述
DbDriver只是对于MYSQL C API的一个非常简单的封装,作者原句是This class does as little as possible to adapt between its public interface and the interface required by the underlying C API. 作为MYSQL++的使用者我们不应该直接去创建这个类型,而应该默认让mysqlpp:: Connection来来创建和管理,如果实在是需要,可以通过mysqlpp:: Connection::driver( )来获取底层的DbDriver类型。
继续阅读 »
9. MYSQL++中的Field、FieldNames以及FieldTypes类型
mysqlpp::Field其实使用的并不多,主要在于Result.h中ResultBase以及他的派生类型(UseQueryResult和StoreQueryResult)的几个获取下一个field的方法(全部定义在了ResultBase中),主要如下
继续阅读 »
8. MYSQL++中的Row类型
一、mysqlpp::Row类型
在之前的介绍中我们看到了如何通过mysqlpp::Query找到各种Result类型,然后又仔细分析了各种Result类型又是如何生成对应的Row类型(如下所示)。
继续阅读 »
近期评论