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++写的真溜啊,佩服。