C++mysql编写过程
来源:互联网 发布:免费国际电话软件 编辑:程序博客网 时间:2024/06/05 22:52
一、linux环境下mysql数据库的安装
在这里以ubuntu操作系统为例,其实其它的操作系统只不过是下载包的命令不同(ubuntu:apt-get;redhat:yum)
1. 首先应该更新一下apt-get
gxw:~$ sudo apt-get update
2. 下载mysql服务器
gxw:~$ sudo apt-get install mysql-server
gxw:~$ sudo apt-get install mysql-client
gxw:~$ sudo apt-get install libmysqlclient-dev
在安装过程中会访问设置root密码
这里下载的是系统默认的mysql版本(ubuntu 14.04 :mysql 5.5 ,Ubuntu 16.04:mysql5.7)
如果想安装其它版本的mysql,可以参照这篇文章
http://www.epooll.com/archives/830/
3. 查看是否安装成功
gxw:~$ sudo netstat –tap | grep mysql
4. 重启mysql服务
gxw:~$ sudo service mysql restart
5. 登录mysql数据库
gxw:~$ mysql –u root –p
输入密码,就成功了
NOTE:
1. 所有下载的文件将保存在 /usr/local/software/ 目录下
2. mysql 将以mysql用户运行,而且将加入 service 开机自动运行
3. mysql 将被安装在 /usr/local/mysql/ 目录下
4. mysql 默认安装使用utf8 字符集
5. mysql 的数据和日志文件保存在 /var/mysql/ 对应目录下
6. mysql 的配置文件保存于/var/mysql/my.cnf
二、mysql设置远程访问
1. 编辑mysql配置文件,把bind-address=127.0.0.1注释掉
gxw:~$ sudo vim/etc/mysql/mysql.conf.d/mysql.cnf
2. 使用root进入mysql命令行,
grant all on *.* to username@'%'identified by 'password with grant option;
note:username是用户名,passwd 是密码。
mysql> grant all privileges on *.* toroot@"%" identified by "123456" with grant option;
mysql> flush privileges;
3.然后重启mysql
gxw:~$ /etc/init.d/mysql restart
4.mysql远程连接的使用
mysql_real_connect(&m_connection,szDbIp,szUser,szPassword,szDbName, 0,nullptr, 0)
在此函数中可以修改szDbIp的地址为远程mysql数据库PC机的IP地址,及可实现远程访问
三.Mysql基本语句
Note:1.范围指的是搜索的范围
选择:select * from table where 范围 ;
插入:insert into table (field1,field2) values(value1,value2) ;
删除:delete from tablewhere 范围 ;
更新:update table set field1=value where 范围
查找:select * from table where field1 like '%value1%';
---like的语法很精妙,查资料!
select * from table where 范围;
排序:select * from table order by field1,field2 desc(降)/asc(升)
总数:select count as totalcount from table
求和:select sum(field1) as sumvalue from table
平均:select avg(field1) as avgvalue from table
最大:select max(field1) as maxvalue from table
最小:select min(field1) as minvalue from table
四.SQL语句的编写
对数据库进行编程时,对数据库交互,一定会编写具体的SQL语句
下面以一个插入数据库操作为例。
1.添加strSQL字符串
Std::string strSQL = “insert intotbl_example (”
2.查找其它表获取字段
获得查询结果集,用一个指针数组进行存储这个结果集(如果用new、malloc申请的空间,一定要用delete、free释放,同时要给指针赋为nullptr)
char **Result =pEM->FetchRow();
对于返回的结果集,可以通过下标偏移来选择所需要的字段,如:Result[1]就是数据库中该表相对应的第二个字段的值
3.编写SQL语句时,应注意int类型的数字转为string类型,使用string的to_string()方法
4.还需注意的是,如果插入的字段在该表中是字符类型,则一定要在插入的SQL该字段值两边加上双引号
5.对于string字符串的连接可以有很多种方法,我选择+=,感觉方便。
五、windows、linux编码转变。
NOTE:如果编码错误的话,会出现插入数据库乱码或者中文插入数据库不显示。
1.windows编码转变
首先,我们应该确定数据库连接编码是不是设置为utf-8。
mysql_set_character_set(&m_connection,"utf8");
然后是数据库是否是utf-8.
可以在命令行下,输入status;进行查看
然后以上都ok的话,但还是会出现NOTE里的问题,那么我们就只将插入的SQL语句转为utf8.
注:插入数据库的语句要转变为UTF-8,从数据库中获得信息,又必须的要转变为原来的编码格式(gb2312)
下面是这两个函数。
#ifdef _WIN32
//Note: this two function only is used windows
/**
*@brief : gb2312 to utf-8
*@param : const char* gb2312 type of string
*@return : char* utf-8 type of string
*/
char* DBWorker::GToU(constchar*gb2312)
{
int len =MultiByteToWideChar(CP_ACP, 0,gb2312, -1, NULL, 0);
wchar_t* wstr = new wchar_t[len + 1];
memset(wstr, 0,len + 1);
MultiByteToWideChar(CP_ACP, 0,gb2312, -1,wstr,len);
len = WideCharToMultiByte(CP_UTF8, 0,wstr, -1,NULL, 0,NULL,NULL);
char* utf8 = new char[len + 1];
memset(utf8, 0,len + 1);
WideCharToMultiByte(CP_UTF8, 0,wstr, -1,utf8,len, NULL,NULL);
if (wstr)
delete[] wstr;
return utf8;
}
/**
*@brief : utf-8 to gb2312
*@param : const char* utf-8 type of string
*@return : char* gb2312 type of string
*/
char* DBWorker::UToG(constchar*utf8)
{
int len =MultiByteToWideChar(CP_UTF8, 0,utf8, -1, NULL, 0);
wchar_t* wstr = new wchar_t[len + 1];
memset(wstr, 0,len + 1);
MultiByteToWideChar(CP_UTF8, 0,utf8, -1,wstr,len);
len = WideCharToMultiByte(CP_ACP, 0,wstr, -1,NULL, 0,NULL,NULL);
char* str = new char[len + 1];
memset(str, 0,len + 1);
WideCharToMultiByte(CP_ACP, 0,wstr, -1,str,len, NULL,NULL);
if (wstr)
delete[] wstr;
return str;
}
#endif
2.linux编码转变
Linux环境下,也可以通过编写程序来转变编码格式,这里我不介绍,可以通过网上查看到。我提供的是一个方法,在vim 打开所有文件 然后在一个文件的命令模式下输入
:argdo set fenc=utf-8 | update
然后可以通过set fileencoding查看修改成功没。
哈哈,这样就ok了。
六、服务器数据库编程思路
- C++mysql编写过程
- MySQL存储过程编写
- 编写mysql存储过程
- mysql 编写存储过程实例
- Mysql 存储过程编写说明
- c程序编写过程流程
- mysql 存储过程编写(2)
- shell脚本编写存储过程(mysql)
- mysql编写存储过程hibernate4调用
- 不好的MySQL过程编写习惯
- MySQL存储过程的编写与使用
- Atitit mysql存储过程编写指南
- C#--存储过程综合查询的编写
- mysql c API 存储过程
- Linux c访问mysql 编写入门
- c#+windows环境 编写mysql集群服务
- Linux上c语言编写MySQL程序
- c / c + + 调用mysql存储过程
- 单手锻炼的4个经典动作
- Linux 配置IP地址
- C和指针读书笔记(第四章、第五章)
- android应用开发SharedPreferences存储数据的使用方法
- java打印一个数据库的所有表的主键
- C++mysql编写过程
- 使用git遇到的问题汇总
- 八大排序算法
- 退役-兵巨臂锻炼计划
- Android中Cursor类的概念和用法
- app后台开发架构最新技术方案
- angular中字符串和对象的转换等常用方法
- 带着蜜桃走遍中国
- LIVE555介绍