易截截图软件、单文件、免安装、纯绿色、仅160KB

MySQL开发小结

       最近正在进行一个二次开发接口的项目,在开发过程中发现:我们之前使用的处理客户端和WEB之间编码兼容问题的方法是存在问题的。由于为了支持多语言,数据库表中类型为varchar的字段,他们的字符集都设置成了utf8。之前的做法是客户端将字符串的编码改成utf8编码,然后将该utf8编码的字符串直接写入数据库,这样WEB(使用PHP语言开发的)就只需要简单的修改就能支持多国语言,并且还能和客户端的多语言兼容。由于我们的程序在连接数据库时,使用的是默认的字符集(latin1),所以当我们直接查看数据库表中的数据时,看到的就是貌似乱码的数据(这就是存入字符串的utf8编码)。但当使用ASP.NET开发WEB时,同样的做法就无效了。查阅MySQL手册后,猜想设置连接的字符集可能可以解决这个问题。经测试,确实可行。这里总结一下解决方法:
1.更改连接的字符集的方法
MySQL提供了两种方法来更改连接的字符集,这两种方法分别是:
(1)SET NAMES语句;
(2)API函数mysql_set_character_set()
MySQL手册中建议最好使用(2)来修改连接的字符集,因为“如果需要更改连接的字符集,应该使用mysql_set_character_set函数,而不是执行SET NAMES语句。mysql_set_character_set的工作方式类似于SET NAMES,但它还能影响mysql_real_escape_string所使用的字符集,而SET NAMES不能。”
2.执行mysql插入语句时,返回1366的错误的解决办法
导致这个问题的原因是:当将mysql的连接的字符集改为utf8后,如果插入数据库表中的字符串不是utf8编码的串,则会出现这个错误。在将连接更改为utf8后,读出来的字符串数据也是utf8编码的。所以我需要将字符串在utf8和ansi之间相互转换,转换的主要代码如下:
void AnsiToUtf8(const char* szAnsi, char* szUtf8, int nSize)
{
int nChar = MultiByteToWideChar(CP_ACP, 0, szAnsi, -1, NULL, 0);
if (nChar > 0)
{
wchar_t* pBufw = new wchar_t[nChar];
MultiByteToWideChar(CP_ACP, 0, szAnsi, -1, pBufw, nChar);
WideCharToMultiByte(CP_UTF8, 0, pBufw, -1, szUtf8, nSize, NULL, NULL);
delete[] pBufw;
}
}
void Utf8ToAnsi(const char* szUtf8, char* szAnsi, int nSize)
{
int nChar = MultiByteToWideChar(CP_UTF8, 0, szUtf8, -1, NULL, 0);
if (nChar > 0)
{
wchar_t* pBufw = new wchar_t[nChar];
MultiByteToWideChar(CP_UTF8,


相关文档:

mysql 自增列相关问题整理

MYSQL自增列
1.关键字 :auto_increment
2.自增用法
例:
CREATE TABLE animals ( id mediumint not null auto_increment,
name char(30) not null,
primary key (id));
3.关于自增
Q:怎么获得当前的自增的最大值?
A:select @@identity
Q:怎么获得table的当前自增最大值?
A:select max(id) from table ......

mysql union语法

一 UNION语法
代码 复制代码
SELECT ...   
UNION [ALL | DISTINCT]   
SELECT ...   
[UNION [ALL | DISTINCT]   
SELECT ...]  
SELECT ... UNION [ALL | DISTINCT] SELECT ... [UNION [ALL | DISTINCT] SELECT ...]
UNION用于把 ......

mysql性能指标

mysqladmin extended (绝对值)
重点去监视的值有:
* Slave_running:如果系统有一个从复制服务器,这个值指明了从服务器的健康度
* Threads_connected:当前客户端已连接的数量。这个值会少于预设的值,但你也能监视到这个值较大,这可保证客户端是处在活跃状态。
* Threads_running:如果数据库超负荷了,你将会得到一个 ......

mysql 定时数据备份

1.编写shell脚本
vi /data/www/project_name/bin/mysql_backup.sh
#!/bin/bash
#This is a ShellScript For Auto DB Backup
#Powered by liuzheng

#系统变量定义
DBName=test
DBUser=root
DBPasswd=123456
BackupPath=/tmp/mysql_backup/

NewFile="$BackupPath"db$(date +%y%m%d ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号