当前位置: 首页> 文旅> 美景 > 手机网站制作公司选哪家_杭州网站建设排名_友情链接网站免费_营销型企业网站推广的方法有哪些

手机网站制作公司选哪家_杭州网站建设排名_友情链接网站免费_营销型企业网站推广的方法有哪些

时间:2025/7/11 14:31:43来源:https://blog.csdn.net/2302_80873119/article/details/144470309 浏览次数:0次
手机网站制作公司选哪家_杭州网站建设排名_友情链接网站免费_营销型企业网站推广的方法有哪些

1、方法

想要用C语言连接MySQL,需要使用MySQL官网提供的库。

可以下载官方的库,然后传到Linux上。

也可以直接在Linux上,下载MySQL的开发工具包,即客户端开发包:

sudo apt-get install libmysqlclient-dev

随后只要在 /usr/include/mysql/ 下出现了 <mysql.h>这个头文件即可:

yangz@yangz-virtual-machine:~/MyHome$ ll /usr/include/mysql/
-rw-r--r--  1 root root  33601  9月 18 18:08 mysql.h

或者找到mysqlclient库也行:

yangz@yangz-virtual-machine:~/MyHome$ find / -name libmysqlclient.so*
/usr/lib/libmysqlclient.so
/usr/lib/x86_64-linux-gnu/libmysqlclient.so
/usr/lib/x86_64-linux-gnu/libmysqlclient.so.21.2.40
/usr/lib/x86_64-linux-gnu/libmysqlclient.so.2

之后使用的时候,需要在Makefile文件里连接mysqlclient库:

-L /usr/lib/x86_64-linux-gnu -lmysqlclient

2、MySQL接口介绍

接下来全部使用C语言进行连接,更接近底层。

C++的话,就是对C进行了一通封装,然后创建对象进行操作。

2.1、初始化 mysql_init

要使用数据库,必须先进行初始化:

    MYSQL *ms = mysql_init(nullptr); // MYSQL* 就相当于FILE*、fd等 -> 统称为句柄if (ms == nullptr){std::cerr << "init MySQL error" << std::endl;return 1;}

2.2、连接数据库 mysql_real_connect

    const std::string host = "127.0.0.1"; // 也可以写localhost,就是本地环回const std::string user = "username";const std::string passwd = "password";const std::string db = "conn";const unsigned int port = 8080; // 看配置文件里面设置的portms = mysql_real_connect(ms, host.c_str(), user.c_str(), passwd.c_str(), db.c_str(), port, nullptr, 0);if (ms == nullptr){std::cerr << "connect MySQL error" << std::endl;return 2;}std::cout << "connect MySQL success" << std::endl;

2.3、设置连接的字符集编码 mysql_set_character_set

    mysql_set_character_set(ms, "utf8mb4");

2.4、下达sql语句指令 mysql_query

int mysql_query(MYSQL *mysql, const char *q);

其中const char* q:就是要下达的sq指令:

 std::string sql;while (true){std::cout << "MySQL>>> ";if (!std::getline(std::cin, sql) || sql == "quit"){std::cout << "bye" << std::endl;break;}int n = mysql_query(ms, sql.c_str());if (n == 0)std::cout << sql << " success , n : " << n << std::endl;elsestd::cerr << sql << " error , n : " << n << std::endl;}

2.5、获取select查询结果

    std::string sql = "select * from user;"; // 先selectint n = mysql_query(ms, sql.c_str());if (n == 0)std::cout << sql << " success , n : " << n << std::endl;elsestd::cerr << sql << " error , n : " << n << std::endl;MYSQL_RES *msr = mysql_store_result(ms); // 再将select的结果转储到MYSQL_RESif (msr == nullptr){std::cerr << "mysql_store_result error " << std::endl;return 3;}my_ulonglong rows = mysql_num_rows(msr);     // 行数my_ulonglong fields = mysql_num_fields(msr); // 列数std::cout << "行: " << rows << " , 列 : " << fields << std::endl;MYSQL_FIELD *msr_fields = mysql_fetch_field(msr); // 获取列名for (size_t i = 0; i < fields; i++)std::cout << msr_fields[i].name << "\t";std::cout << "\n";MYSQL_ROW row; // 获取msr这个"二维数组"的一行,逐次往后获取for (size_t i = 0; i < rows; i++){row = mysql_fetch_row(msr); // mysql_fetch_row 就类似于一个迭代器,自动向后获取for (size_t j = 0; j < fields; j++)std::cout << row[j] << "\t";std::cout << "\n";}mysql_free_result(msr); // 释放msr

2.6、关闭

    mysql_close(ms);

2.7、完整流程

#include <iostream>
#include <string>
#include <mysql/mysql.h>int main()
{// std::cout << "mysql client version : " << mysql_get_client_info() << std::endl;// 1. 初始化MYSQL *ms = mysql_init(nullptr); // MYSQL* 就相当于FILE*、fd等 -> 统称为句柄if (ms == nullptr){std::cerr << "init MySQL error" << std::endl;return 1;}// 2.连接数据库const std::string host = "127.0.0.1"; // 也可以写localhost,就是本地环回const std::string user = "username";const std::string passwd = "password";const std::string db = "conn";const unsigned int port = 8080; // 看配置文件里面设置的portms = mysql_real_connect(ms, host.c_str(), user.c_str(), passwd.c_str(), db.c_str(), port, nullptr, 0);if (ms == nullptr){std::cerr << "connect MySQL error" << std::endl;return 2;}std::cout << "connect MySQL success" << std::endl;// 3.设置链接字符集mysql_set_character_set(ms, "utf8mb4");// 4.查询std::string sql = "select * from user;"; // 先selectint n = mysql_query(ms, sql.c_str());if (n == 0)std::cout << sql << " success , n : " << n << std::endl;elsestd::cerr << sql << " error , n : " << n << std::endl;MYSQL_RES *msr = mysql_store_result(ms); // 再将select的结果转储到MYSQL_RESif (msr == nullptr){std::cerr << "mysql_store_result error " << std::endl;return 3;}my_ulonglong rows = mysql_num_rows(msr);     // 行数my_ulonglong fields = mysql_num_fields(msr); // 列数std::cout << "行: " << rows << " , 列 : " << fields << std::endl;MYSQL_FIELD *msr_fields = mysql_fetch_field(msr); // 获取列名for (size_t i = 0; i < fields; i++)std::cout << msr_fields[i].name << "\t";std::cout << "\n";MYSQL_ROW row; // 获取msr这个"二维数组"的一行,逐次往后获取for (size_t i = 0; i < rows; i++){row = mysql_fetch_row(msr); // mysql_fetch_row 就类似于一个迭代器,自动向后获取for (size_t j = 0; j < fields; j++)std::cout << row[j] << "\t";std::cout << "\n";}mysql_free_result(msr); // 释放msr// // 3.下达sql指令// std::string sql;// while (true)// {//     std::cout << "MySQL>>> ";//     if (!std::getline(std::cin, sql) || sql == "quit")//     {//         std::cout << "bye" << std::endl;//         break;//     }//     int n = mysql_query(ms, sql.c_str());//     if (n == 0)//         std::cout << sql << " success , n : " << n << std::endl;//     else//         std::cerr << sql << " error , n : " << n << std::endl;// }// end. 关闭mysql_close(ms);return 0;
}

3、图形化界面

关键字:手机网站制作公司选哪家_杭州网站建设排名_友情链接网站免费_营销型企业网站推广的方法有哪些

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: