关于mysql的安装和配置我就不多说了,这边有一篇流程非常详细
http://blog.csdn.net/q623702748/article/details/51724124
接下来我们怎么在程序中操作数据库呢,之前通常我都是用QT的库,
但是考虑到我们是做服务器开发的话,仅仅因为操作数据库把笨重的qt安装上绝对是不合适的!
之前听说c语言本身就带有操作mysql的接口,但是我在程序中加上#include
但是编译时报错 :
fatal error:mysql.h: No such file or directory
后来查资料才知道出现这个错误的原因是因为体系没有安装mysql开发库!
这时候我才知道c语言操作mysql需要安装一个独立的开发库!
执行下面的指令安装:
sudo apt-get install libmysqlclient-dev
编译时需要链接 -lmysqlclient
程序中调用了mysql的函数,链接动态编译:
gcc -o program program.c -L/usr/lib/mysql -lmysqlclient
makefile:
mydb:main.cpp
g++ -o mydb main.cpp -lmysqlclient -I/usr/include/mysql/ -L/usr/lib/mysql
下面是main.cpp
#include
#include
#include
#include
#include
#define MAX_COLUMN_LEN 32
int
func()
{
//分配或初始化一个mysql对象,该对象mysql_real_connect()函数链接数据库时需要使用
MYSQL *con = mysql_init(NULL);
if (NULL == con)
{
fprintf(stderr, "%s\n", mysql_error(con));
return -1;
}
//建立一个指向数据库的链接,我们需要指定链接句柄,主机名,数据库账号和用户密码
//最后四个参数是数据库名,端口号,unix套接字和客户端标记,我们需要超级用户权限来创建新的数据库
if (NULL == mysql_real_connect(con, "localhost", "root", "123456", NULL, 0, NULL, 0))
{
fprintf(stderr, "%s\n", mysql_error(con));
mysql_close(con);
return -1;
}
//此函数执行一个SQL语句,语句“CREATE DATABASE mydb”用于创建一个新的数据库mydb;
if (mysql_query(con, "CREATE DATABASE huangtaodb"))
{
fprintf(stderr, "%s\n", mysql_error(con));
mysql_close(con);
return -1;
}
//获取服务器信息和主机信息
fprintf(stdout, "%s\n", mysql_get_server_info(con));
fprintf(stdout, "%s\n", mysql_get_host_info(con));
//关闭数据库链接。
mysql_close(con);
}
int
main(int argc, char * argv[])
{
//显示MYSQL客户端版本
printf("MYSQL client version: %s\n", mysql_get_client_info());
func();
return 0;
}
下面我们创建一个用户
mysql -uroot -p123456
CREATE
USER
'bjqe'@
'localhost'
IDENTIFIED
BY
'123456';
将mazhaodb这个数据库的所有权限授予bjqe用户
GRANT ALL ON mazhaodb.* TO 'bjqe'@'localhost' IDENTIFIED BY "123456" WITH GRANT OPTION;;
通过bjqe这个用户对mazhaodb这个数据库进行操作!
#include
#include
#include
#include
#include
#define MAX_COLUMN_LEN 32
int
finish_with_error(MYSQL *con)
{
fprintf(stderr, "%s\n", mysql_error(con));
mysql_close(con);
return -1;
}
int
func()
{
MYSQL *con = mysql_init(NULL);
if(NULL == con)
{
fprintf(stderr, "%s\n", mysql_error(con));
return -1;
}
if(NULL == mysql_real_connect(con, "localhost", "bjqe", "123456", "mazhaodb", 0, NULL, 0))
{
finish_with_error(con);
}
if(mysql_query(con, "DROP TABLE IF EXISTS Phones;"))
{
finish_with_error(con);
}
if(mysql_query(con, "CREATE TABLE Phones(Id INT,Name TEXT,Price INT);"))
{
finish_with_error(con);
}
if(mysql_query(con, "INSERT INTO Phones VALUES(1, '三星GALAXY', 5199);"))
{
finish_with_error(con);
}
mysql_close(con);
return 0;
}
int
main(int argc, char * argv[])
{
//显示MYSQL客户端版本
printf("MYSQL client version: %s\n", mysql_get_client_info());
func();
return 0;
}