首先,你Linux上面必须安装MYSQL数据库,在上面的一篇博客中曾仔细说过,这里便不多说了。
其次,启动MYSQL
进入数据库
重新打开一个终端,查看
请记住他的端口号(3306),后面会用到
给你想使用这个数据库用户权限
PS(图中红笔钩花的便是用户名)
下面便是建表的过程:
接下来是一些基本使用操作:
删除
基本操作先讲到这里,接下来,我们来链接数据库
首先,读者应该在这里下载c connect 下载地址点击打开链接(注意选择版本)
解压到当前目录下:
然后在mysqll.c中写下面一段程序
这是一个输出数据库版本的代码,运行它,你会发现
因为mysql这个库是你动态添加的,所以你要给出他的路径,当然你也可以把它设置为静态的,这里给读者一个链接
这时,你要在MAKEFILE中这样写
然后就可以了,但是又会出现一个问题
动态运行时库为动态时加载,要加载,必须先找到,但是该程序在运行的时候,找不到相关动态库。
系统根据环境变量LD_LIBRARY_PATH(mac 下是DYLD_LIBRARY_PATH)来帮助应用程序查找动态库。所以将对应动态库路径,添加到该环境变量里
这样便可以了。
接下来,我们写如下代码,便可以向数据库中增加和查找,具体有注释
<span style="font-size:18px;">#include<iostream>
#include<mysql.h>
#include<dlfcn.h>
#include<string>
MYSQL *conn = mysql_init(NULL); //初始化
MYSQL_RES *res =NULL;
const char* host = "127.0.0.1"; //你要链接数据库所在服务器或主机的IP
const char* user ="root"; //链接的用户名
const char* passwd = ""; //链接的密码
const char* db = "data_test"; //链接数据库中的哪个库
int port = 3306; //端口号
int ret = -1;
int my_connect_mysql(){
if(!mysql_real_connect(conn,host,user,passwd,db,port,NULL,0) <span style="font-family: Arial, Helvetica, sans-serif;">//如果成功则返回一个 MySQL 连接标识,失败则返回 FALSE。</span></div><div class="para" label-module="para" style="word-wrap: break-word; color: rgb(51, 51, 51); margin-bottom: 15px; text-indent: 2em; line-height: 24px; zoom: 1; font-family: arial, 宋体, sans-serif;"><span style="font-size:18px;">//mysql_connect() 建立一个到 MySQL 服务器的连接。</span></div><span style="font-size:18px;"></span>
std::cerr<<"connect fail"<<std::endl;
}
else{
std::cout<<"connect success!"<<std::endl;
ret = 0;
}
return ret;
}
int my_insert(std::string& cols, std::string& data) //插入数据
{
std::string sql = "INSERT INTO student";
sql +=cols;
sql +=" values ";
sql += data;
std::cout<<sql<<std::endl; //按照数据库插入格式来添加,cols是前面的属性,后面的data是要添加的数据
if(mysql_query(conn,sql.c_str()) == 0){
std::cout<<"insert success"<<std::endl;
}
else{
std::cerr<<"insert failed"<<std::endl;
}
return 0;
}
int my_select() //输出当前库中的数据
{
std::string sql = "SELECT * FROM student";
if(mysql_query(conn,sql.c_str()) == 0){
std::cout<<"sql selecct"<<std::endl;
}
else{
std::cerr<<"sql is fail.."<<std::endl;
return -1;
}
res = mysql_store_result(conn); // MYSQL_RES *mysql_store_result(MYSQL *mysql)
//对于成功检索了数据的每个查询(SELECT、SHOW、DESCRIBE、EXPLAIN、CHECK TABLE等),必须调用mysql_store_result()或mysql_use_result() 。
//对于其他查询,不需要调用mysql_store_result()或mysql_use_result(),但是如果在任何情况下均调用了mysql_store_result(),它也不会导致任何伤害或性能降低。</span>
//通过检查mysql_store_result()是否返回0,可检测查询是否没有结果集(以后会更多)。
if(res){
int line = mysql_num_rows(res); //读取此表中的行数
int cols = mysql_num_fields(res); //读取此表中的列数
std::cout<<"line:"<<line<<"\t"<<" cols:"<<cols<<std::endl;
MYSQL_FIELD *fn = NULL;
for(;fn = mysql_fetch_field(res);){
std::cout<<fn->name<<"\t";
}
int i = 0;
for(;i<line;i++){ //打印出其中的数据
MYSQL_ROW row = mysql_fetch_row(res);
int j= 0;
for(;j < cols; j++){
std::cout<<row[j]<<'\t';
}
std::cout<<std::endl;
}
std::cout<<std::endl;
}
}
int main()
{
std::string cols ="(n_name,n_age,n_school)";
std::string data ="('nana',21,'SUSt')";
my_connect_mysql();
my_select();
my_insert(cols,data);
//printf("MYSQL client : %s\n",mysql_get_client_info());
return 0;
}
</span>
结果如下:
至于其他的操作大多一致,故不在重复。
本文详细介绍如何在Linux环境中安装并配置MySQL数据库,包括启动、建表、权限设置及使用C语言进行数据库连接与操作的方法。
225

被折叠的 条评论
为什么被折叠?



