Mysql 插入中文及中文查询 (修改+调试)

//我修改之,能正常运行,测试环境为mysql5.0,xp
//关键是设置对字符集,设置gbk,gb2312测试通过,utf8测试未通过
//在运行程序前先建立数据库jj,注意下面几个参数(修改为你自己的)


代码如下:

// char *host = "localhost";
// char *user = "root";
// char *pass = "674800";
// char *db = "jj";
#include <windows.h>
#include <iostream>
#include <mysql.h>
#include <stdio.h>
#include <string.h>
using namespace std;
#pragma comment(lib,"libmysql.lib")
int connDB();
int create_table();
int insert_table();
int select_table();
int disconnDB();
MYSQL *mysql;
MYSQL_RES *res;
MYSQL_FIELD * fd;
MYSQL_ROW row;
char szSqlText[500]="";
int i;
int main()
{
connDB();
// create_table();
insert_table();
select_table();
disconnDB();
return 0;
}
///////////////子函数
int connDB()//连接数据库
{
char *host = "localhost";
char *user = "root";
char *pass = "674800";
char *db = "jj";
mysql = mysql_init((MYSQL*) 0);
mysql_real_connect( mysql, host, user, pass, db,3306, NULL, 0 ) ; //链接到服务器
mysql_set_character_set(mysql,"gb2312"); //设置字符集
cout<<"conn OK!"<<endl;
return 0;
}
//关闭数据库
int disconnDB()
{
mysql_close( mysql ) ;
cout<<"disconn OK!"<<endl;
return 0 ;
}
//创建表
int create_table()
{
mysql_set_character_set(mysql,"gb2312");
sprintf(szSqlText, \
"create table mytable \
(s0 varchar(100), \
s1 char(6),\
s2 varchar(4),\
s3 varchar(3),s4 int)\
ENGINE=InnoDB \
DEFAULT CHARSET=gb2312");
if(mysql_query( mysql, szSqlText))
cout<<"occurred an error:"<<mysql_error(mysql)<<endl;
return 0;
}
int insert_table()
{
mysql_set_character_set(mysql,"gb2312");
sprintf(szSqlText,
"insert into mytable\
values('2000-3-10 21:01:30',\
'Test',\
'清风寒剑',\
'岁月情',\
2500)");
if( mysql_query( mysql, szSqlText) )
cout<<"occurred an error:"<<mysql_error(mysql)<<endl;
return 0;
}
int select_table()
{
mysql_set_character_set(mysql,"gb2312");
sprintf(szSqlText, "select * from mytable ");
if (mysql_query( mysql, szSqlText))
{
cout<<"occurred an error:"<<mysql_error(mysql)<<endl;
mysql_close( mysql ) ;
return FALSE ;
}
res = mysql_store_result( mysql) ;
i = (int) mysql_num_rows( res ) ;
cout<<"Query: "<<szSqlText<<"\n"<<i<<" records found:"<<endl;
for ( i = 0 ; fd = mysql_fetch_field( res ) ; i++ )
cout<<fd->name<<"\t";
cout<<endl;
while(row = mysql_fetch_row( res ))
cout<<row[0]<<"\t"<<row[1]<<"\t"<<row[2]<<"\t"<<row[3]<<"\t"<<row[4]<<endl;
mysql_free_result( res ) ;
cout<<"select OK!"<<endl;
return 0;
}

我机器上的运行结果:

(0)

相关推荐

  • Mysql auto_increment 重新计数(让id从1开始)

    方法一 delete from test; alter table `test` auto_increment=1 (好处,可以设置AUTO_INCREMENT 为任意值开始) 提示:如果表列和数据很多,速度会很慢,如90多万条,会在10分钟以上. 方法二 truncate table test (好处,简单,AUTO_INCREMENT 值重新开始计数) 一般情况下我们使用第二个就可以了,记住以上情况都是彻底删除所有记录.

  • MYSQL使用inner join 进行 查询/删除/修改示例

    复制代码 代码如下: --查询 SELECT tp.tp_id, tp.tpmc, tp.leveid, tp.tpdz, tp.jgm, tp.scsj, tp.pbzyid, tp.ksbfsj, tp.jsbfsj, tp.status, tp.tpbz FROM qdgl_tupian tp INNER JOIN qdgl_pqb pq ON tp.tp_id=pq.tpid WHERE pq.bfjgm='27010825' AND ps_bfsj >= '2013-01' AND p

  • MySQL查询和修改auto_increment的方法

    本文实例讲述了MySQL查询和修改auto_increment的方法.分享给大家供大家参考.具体如下: 查询表名为tableName的auto_increment值: 复制代码 代码如下: SELECT AUTO_INCREMENT FROM information_schema.tables WHERE table_name="tableName"; 修改表名为tableName的auto_increment值: 复制代码 代码如下: ALTER TABLE tableName au

  • 解析mysql中的auto_increment的问题

    今儿在逛论坛时,发现一个看似很简单的问题,却引起了大家的广泛关注:这是一道很早的面试题:一张表,里面有ID自增主键,当insert了17条记录之后,删除了第15,16,17条记录,再把Mysql重启,再insert一条记录,这条记录的ID是18还是15 .答案: 如果表的类型是MyISAM,那么是18. 因为MyISAM表会把自增主键的最大ID记录到数据文件里,重启MySQL自增主键的最大ID也不会丢失. 如果表的类型是InnoDB,那么是15. InnoDB表只是把自增主键的最大ID记录到内存

  • 怎么重置mysql的自增列AUTO_INCREMENT初时值

    重置 MySQL 自增列 AUTO_INCREMENT 初时值 注意, 使用以下任意方法都会将现有数据删除. 方法一: delete from tb1; ALTER TABLE tbl AUTO_INCREMENT = 100; (好处, 可以设置 AUTO_INCREMENT 为任意值开始) 提示:如果表列和数据很多, 速度会很慢, 如90多万条, 会在10分钟以上. 方法二: truncate tb1; (好处, 简单, AUTO_INCREMENT 值重新开始计数.) 怎么重置mysql的

  • mysql中自增auto_increment功能的相关设置及问题

    mysql中的自增auto_increment功能相信每位phper都用过,也都知道如何设置字段为自增字段,但并不是所有phper都知道auto_increment的起始值和递增量是如何设置的!本文就为大家分享一下mysql字段自增功能的具体查看及设置方法. 涉及知识介绍: mysql服务器维护着2种mysql的系统参数(系统变量):全局变量(global variables)和会话变量(session variables).它们的含义与区别如其各占的名称所示,session variables

  • Mysql 插入中文及中文查询 (修改+调试)

    //我修改之,能正常运行,测试环境为mysql5.0,xp //关键是设置对字符集,设置gbk,gb2312测试通过,utf8测试未通过 //在运行程序前先建立数据库jj,注意下面几个参数(修改为你自己的) 复制代码 代码如下: // char *host = "localhost"; // char *user = "root"; // char *pass = "674800"; // char *db = "jj"; #

  • Mysql LONGBLOB 类型存储二进制数据 (修改+调试+整理)

    在DBMS中线要创建数据库test,table bintest,data字段数据类型用LONGBLOB即可测试 //测试文件c:\\test.iso,你可以找任何一个文件修改为即可,我找的是一个exe程序,修改为test.iso而已 //最大测试过加入文件大小为650M(一个正真的iso文件) //注意:还要修改my.ini文件中的max_allowed_packet字段,我设置的是 复制代码 代码如下: //max_allowed_packet = 1024M //#define host "

  • Mysql优化技巧之Limit查询的优化分析

    前言 在实际业务中对于分页来说是一个比较常见的业务需求.那么就会使用到limit查询,当我们在使用Limit查询的时候,在数据比较小.或者只查询前面一部分数据的时候效率是很高的.但是当数据量大的时候,或者查询offset数量比较大的时候,如:limit 100000,20效率往往就不尽人意了.通常的一个办法就是Limit配合order by,如果order by有对用户的索引的话,效率通常是比较不错的. 对于这种情况,最简单的查询就是 使用覆盖索引,查询某些需要的列.这样的效果是很好的 如下面这

  • 解决Linux下Tomcat向MySQL插入数据中文乱码问题

    一.问题 在windows上面使用eclipse开发的项目在windows上面运行一切正常,部署到腾讯云时出现向MySQL数据库中插入数据是中文乱码 二.解决办法 1.尝试一 直接在linux上面使用insert语句插入中文,正常 2.尝试二 在tomcat配置文件server.xml中加入useBodyEncodingForURI="true",不行 3.尝试三 在tomcat配置文件server.xml中再加入URIEncoding="UTF-8",不行 4.尝

  • 教你一招永久解决mysql插入中文失败问题

    前言 问题描述: Incorrect string value:'\xD5\xC5\xC8\xFD' for column 'name' at row 1; 本文是采用修改配置文件,也就几分钟搞定,修改前请备份~~ 有的小伙伴在mysql中插入中文会报错,那么我们要指定字符集. 使用一个命令可以查看当前数据的字符集~(没有修改的时候是拉丁文) show variables like '%character%'; 我们可以有临时解决方案,和永久解决的方案,这里我们只说永久解决的方案: 想要支持中文

  • Ubuntu下Mysql 常用指令及中文乱码问题

    下面给大家介绍mysql 常用指令及中文乱码解决问题 Mysql 系统管理指令 登陆本地 Mysql mysql -u username -p # 回车输入密码 或者 mysql -u username -p passswd; 登陆远程 Mysql mysql -h address -u username -p # 回车输入密码 或者 mysql -h address -u username -p passswd; 修改新密码 mysql> use mysql; mysql> update u

  • PHP+MySQL存储数据常见中文乱码问题小结

    本文实例总结了PHP+MySQL存储数据常见中文乱码问题.分享给大家供大家参考,具体如下: PHP+MySQL出现中文乱码的常见原因: 1. MYSQL数据库的编码是utf8,与PHP网页的编码格式不一致,就会造成MYSQL中的中文乱码. 2. 使用MYSQL中创建表.或者选择字段时设置的类型不是utf8,而网页编码不是utf8,也可能造成MYSQL中文乱码. 3. PHP页面的字符集与数据库的编码不一致. 4. PHP连接MYSQL数据库,操作是设定的语句指定的编码和页面编码,PHP页面编码不

  • Java对MySQL数据库进行连接、查询和修改操作方法

    0. 一般过程: (1) 调用Class.forName()方法加载驱动程序. (2) 调用DriverManager对象的getConnection()方法,获得一个Connection对象. (3) 创建一个Statement对象,准备一个SQL语句,这个SQL语句可以是Statement对象(立即执行的的语句).PreparedStatement语句(预编译的语句)或CallableStatement对象(存储过程调用的语句). (4) 调用excuteQuery()等方法执行SQL语句,

  • mysql从一张表查询批量数据并插入到另一表中的完整实例

    说在前面 nodejs 读取数据库是一个异步操作,所以在数据库还未读取到数据之前,就会继续往下执行代码. 最近写东西时,需要对数据库进行批量数据的查询后,insert到另一表中. 说到批量操作,让人最容易想到的是for循环. 错误的 for 循环版本 先放出代码,提前说明一下,在这里封装了sql操作:sql.sever(数据库连接池,sql语句拼接函数,回调函数) for(let i=0;i<views.xuehao.length;i++){ sql.sever(pool,sql.select(

  • MySQL命令无法输入中文问题的解决方式

    发现问题 近期通过 mysql 命令连接 mysql server 的时候, 出现了不能输入中文的现象, 如下所示: mysql> SELECT 'Chinese characters <> are stripped'; +------------------------------------+ | Chinese characters <> are stripped | +------------------------------------+ | Chinese ch

随机推荐