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.查找其它表获取字段

       获得查询结果集,用一个指针数组进行存储这个结果集(如果用newmalloc申请的空间,一定要用deletefree释放,同时要给指针赋为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了。

 

 

六、服务器数据库编程思路

 

1 0
原创粉丝点击