MYSQL数据库使用与链接详解(Linux)
2016-08-15 14:04
369 查看
首先,你Linux上面必须安装MYSQL数据库,在上面的一篇博客中曾仔细说过,这里便不多说了。
其次,启动MYSQL
进入数据库
重新打开一个终端,查看
请记住他的端口号(3306),后面会用到
给你想使用这个数据库用户权限
PS(图中红笔钩花的便是用户名)
下面便是建表的过程:
接下来是一些基本使用操作:
删除
基本操作先讲到这里,接下来,我们来链接数据库
首先,读者应该在这里下载c connect 下载地址点击打开链接(注意选择版本)
解压到当前目录下:
然后在mysqll.c中写下面一段程序
这是一个输出数据库版本的代码,运行它,你会发现
因为mysql这个库是你动态添加的,所以你要给出他的路径,当然你也可以把它设置为静态的,这里给读者一个链接
这时,你要在MAKEFILE中这样写
然后就可以了,但是又会出现一个问题
动态运行时库为动态时加载,要加载,必须先找到,但是该程序在运行的时候,找不到相关动态库。
系统根据环境变量LD_LIBRARY_PATH(mac 下是DYLD_LIBRARY_PATH)来帮助应用程序查找动态库。所以将对应动态库路径,添加到该环境变量里
这样便可以了。
接下来,我们写如下代码,便可以向数据库中增加和查找,具体有注释
至于其他的操作大多一致,故不在重复。
其次,启动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下编译使用自己的动态链接库-详解
- linux链接库(动态/静态)的使用详解
- Java 使用JDBC链接MySQL数据库(Linux)
- Squid-Linux下的使用详解 ZT
- Linux 系统命令及其使用详解(大全)
- 关于linux系统中命令的使用详解(续)
- linux 中tar的使用详解
- Linux 系统命令及其使用详解(大全)
- 在Linux上使用Mono连接MySQL数据库
- linux的chmod命令使用详解
- 关于linux系统中命令的使用详解2(附带有例子说明)
- Linux 中 RPM 命令参数使用详解
- linux下RPM使用详解
- 字符集之:Linux下c编程使用中文---基础之Locale详解
- Linux FTP命令详解及使用技巧
- linux的chmod命令使用详解
- linux中PS命令使用详解
- 使用JDBC连接MySQL数据库详解
- Linux中链接库使用和实现
- linux高级工具命令(二)tcpdump的使用详解