1.安装MySQL
本来,按照常识,直接执行下面的apt命令就好。但其实安装失败了。
$ sudo apt-get install mysql-server
mysql命令虽然能找到,但敲下后会报错误
Can’t connect to local MySQL server through socket
这是MySQL需要的包不全导致的。即使执行apt update也不行。
需要安装MySQL的内核和客户端
$ sudo apt-get install mysql-core-core5.5 $ sudo apt-get install mysql-client
再执行
$ sudo apt-get install mysql-server
就可以了.
成功的话,安装过程中会弹出如下图的界面,要求输入root的密码。(这里设为123456)
2.配置一个测试用的数据库
2.1 进入mysql界面
$ mysql -uroot -p123456
2.2 创建一个DATABASE
mysql> CREATE DATABASE cpptest;
*mysql的控制台,SQL语句要以”;”结尾.
2.3 创建一个表
mysql>; CREATE TABLE T_ATTEND( name VARCHAR(20), thedate CHAR(10) );
2.4 插入若干条数据
mysql>; insert into T_ATTEND values( 'zhang', '2015-04-01' ) ; mysql> insert into T_ATTEND values( 'susan', '2015-04-01' ) ; mysql> insert into T_ATTEND values( 'messi', '2015-04-01' ) ; mysql> insert into T_ATTEND values( 'Jordan', '2015-04-01' ) ; mysql> insert into T_ATTEND values( 'James', '2015-04-01' ) ; mysql> insert into T_ATTEND values( 'James', '2015-04-13' ) ;
2.5 查看结果
mysql> select * from T_ATTEND;
3.编写一段C++代码
3.1 安装MySQL开发用函数库
$ sudo apt-get install libmysqlclient-dev
3.2 编写一个连接数据库用的类DBServer.默认数据库为刚才创建的库.
dbserver.h
#ifndef _DB_CONNECTOR_H_ #define _DB_CONNECTOR_H_ #include<stdlib.h> #include<iostream> #include<string> #include <mysql/mysql.h> #ifndef US #define US (unsigned short) #endif using namespace std ; class DBServer { public: DBServer() ; ~DBServer() ; public: unsigned short Init( const string strInitStr ) ; unsigned short Connect() ; unsigned short Connect( const string strServer = "localhost", const string strUser = "root", const string strPwd = "123456", const string strDBName = "cpptest" ); unsigned short Disconnect() ; unsigned short Query( const string strParam, MYSQL_RES*& pResult ) ; unsigned short Execute() ; protected: MYSQL* m_pConn ; MYSQL_RES* m_pRes ; string m_strErr ; }; #endif
dbserver.cpp
#include "dbserver.h" #include <stdio.h> DBServer::DBServer() : m_pConn(NULL) { } DBServer::~DBServer() { } unsigned short DBServer::Init( const string strInitStr ) { m_pConn = mysql_init(NULL) ; printf("****Init****\n") ; //printf(" pConn = %08X \n", (int)m_pConn ) ; return 0 ; } unsigned short DBServer::Connect() { return 0 ; } unsigned short DBServer::Connect( const string strServer /*= "localhost"*/, const string strUser /*= "root"*/, const string strPwd /*= "123456"*/, const string strDBName /*= "cpptest"*/ ) { if ( !mysql_real_connect( m_pConn, strServer.c_str(), strUser.c_str(), strPwd.c_str(), strDBName.c_str(), 0, NULL, 0) ) { printf("Can't connect to Database\n") ; return 1 ; } return 0 ; } unsigned short DBServer::Disconnect() { mysql_close( m_pConn ) ; return 0 ; } unsigned short DBServer::Query( const string strParam, MYSQL_RES*& pResult ) { if ( mysql_query( m_pConn, strParam.c_str() ) ) { m_strErr = mysql_error( m_pConn ) ; } pResult = mysql_use_result( m_pConn ) ; //printf( "QueryLen= %d\n", (int)mysql_fetch_lengths(res) ); //*pResult = *res ; return 0 ; } unsigned short DBServer::Execute() { return 0 ; }
3.3 编写主程序,调用刚才写好的类
signin.cpp
#include "dbserver.h" #include <stdio.h> #define _SELECT_ALL_ "SELECT * FROM T_ATTEND " main() { DBServer server ; MYSQL_RES* pRes ; MYSQL_ROW row ; do { if ( 0 != server.Init("") ) { break ; } if ( 0 != server.Connect("localhost") ) { break ; } if ( 0 != server.Query( _SELECT_ALL_, pRes ) ) { break ; } printf( "Querey length %d\n", (int)mysql_num_rows(pRes) ) ; row = mysql_fetch_row(pRes) ; while( NULL != row ) { printf( "NAME: %s \t\t DATE: %s \n", row[0], row[1] ) ; row = mysql_fetch_row(pRes) ; } mysql_free_result( pRes ) ; server.Disconnect() ; } while(0) ; }
3.4 编译
$ g++ dbserver.cpp signin.cpp -L/usr/lib/mysql -I/usr/include/mysql/ -lmysqlclient -o mytest
3.5 验证
$ ./mytest
MYSQL API的用法,可以在http://docstore.mik.ua/orelly/linux/sql/ch19_01.htm找到.
我只觉得那头猪养的不错。
都是主席指导的好.
真心看不懂,不过我会时常来转转的。
那是种猪么?
不知道,反正按年代论一定是死猪。
估计不少人会碰到和你一样的问题的。
希望对后来人有所帮助
好多技术性文章~~学习下 欢迎每天互访~~
一直没明白为什么执行命令要加上sudo
因为Ubuntu默认把root帐号藏了起来,没有给普通用户授予root权限.给系统装工具这种事显然是需要root级别才能做的.
sudo的意思就是super user do,就是以超级用户的身份去执行后面的命令.
顶头那只猪博主从哪里领来的,色调,风格,太有意思了。
那人脸上洋溢着的不是幸福是什么?
一个专门收中国宣传画的英文站,需翻墙.
因为文章的重点看不懂所以都跑到那头猪上面去了 我觉得
大哥,c++写的真溜啊,佩服。