C/C++对MySQL操作
昨天晚上在看C/C++对数据库的操作,猛然间觉得十分亲切,因为其中很多函数都和PHP中对MySQL操作相同,这是才想起PHP是C演化而来的。经过一番捣腾,终于完成了一个简单的程序,但是仍然存在着一个严重的问题,就是从数据库中得到的结果在屏幕上显示的是乱码,很让人烦。还望高手们赐教!
1.在机器上装上MySQL ,假设安装在 C:\MySQL\中;
2.这里我们用VC6.0来编写C++程序,但是这个之前要对VC6.0做一些设置,也就是把MySQL目录下的include和lib目录包含到VC6.0的directory选项中。具体的做法是在VC6.0中 tools(工具)>>option(选项)>>directories(目录)这个设置中把 include files 添加一个路径 C:\MySQL\include ,再给library files 添加一个路径C:\MySQL\lib\opt ,这样设置以后你就能够在程序中直接include对数据库操作的相关头文件了。
3.现在可以开始写程序了,代码如下:
//===========================================================//
// TestMySQL.cpp
// Author : ASpire
// Discrb : for testing C++ in operating mysql
// Time : 2010-3-18
//===========================================================//
/* include header about mysql */
#include "winsock2.h"
#include "mysql.h"
#include <stdio.h>
#define CONN_HOST "localhost"
#define CONN_USER "user"
#define CONN_PWD "password"
#define CONN_DB "luntan"
//----------------------------------------------------------//
MYSQL mysql;
void exiterr(int exitcode)
{
fprintf(stderr,"%s",mysql_error(&mysql));
exit(exitcode);
}
int mysql_test()
{
MYSQL_RES *res;
MYSQL_ROW row;
unsigned int i = 0;
/* init mysql handler */
if(!mysql_init(&mysql))
{
exiterr(-1);
}
/* connect to mysql */
if(!mysql_real_connect(&mysql,CONN_HOST,CONN_USER,CONN_PWD,NULL,MYSQL_PORT,NULL,0))
{
exiterr(-2);
}
/* select db */
if(mysql_select_db(&mysql,CONN_DB))
{
exiterr(-3);
}
/* set db cha
相关文档:
本文介绍了使用Pro*C/C++在Visual
C++环境下开发Oracle数据库接口程序的方法
设计思路其实这样:首先通过VC建立一个工程,自动化建立MAKEFILE,UNIX需要自己写MAKEFILE。
其次配置VC的环境,将PROC的.H,.LIB的路径加入DERECTIRY。写一个PC文件,即PROC文件。放到工程相应的目录下。然后把PC文件加入工程。使用PROCUI.E ......
完美解决mysql下utf-8的乱码问题
建表时先加上default charset=utf8;
插入中文数据之前(Mysql命令提示符下)是用set names gb2312;
在php页面中设置是mysql_query('SET NAMES UTF8');
在php页面(已设定为utf8后)中插入中文数据不会出现乱码,应该插入数据库的时候就是以utf8字符集插入中文数据的故不会出现问题!
在php ......
为了让用户不需要自己运行mysql安装程序安装mysql数据库,软件发布时需要打包免安装版本的mysql。从mysql官网上直接下载的免安装版本需要各种配置,如果配置不好,很容易产生各种各样的问题。尤其是错误码为1067的问题,我试验了网上的很多方法都没起作用,最后想了一个最简单的方法:
(1)首先使用安 ......
由于系统需要,写了一个ORDER BY 的SQL查询语句进行字段排序,查询结果没有进行排序,SQL语法正确;
于是,进入MySQL控制台,执行SQL语句,没有报错,但是就是没有排序;
经过查找发现,在写 ORDER BY ' time' DESC 语句中,使用了“ ' ”符号,导致MySQL无法正常解析,去掉排序正常;
或者可以用 &ldqu ......
今天,折腾了一个下午,终于解决了Hibernate 存储Blob字段时,数据量非常大时总是报 can not update jdbc batch的错误了,原来是MySQL中没有设定最大允许值所致,我还以为是Hibernate操作不符合标准才这样。。。呵呵,在Mysql 5.1中的my.ini配置文件中加入如下设置:
[MYSQL]
max_allowed ......