5、通过api操作mysql的小例子

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 今天写了个简单的mysql程序,通过C语言。 示例代码 View Code #include "stdio.h"#include "mysql.h"#include #include "stdlib.

今天写了个简单的mysql程序,通过C语言。

示例代码

View Code

#include "stdio.h"
#include
"mysql.h"
#include
<pthread.h>
#include
"stdlib.h"
#include
"string"
#include
"iostream"

using namespace std;

typedef
struct SqlInfo
{
string server;
string user;
string passwd;
string db;
}SqlInfo;

void* showdatabase(void* arg)
{
    SqlInfo
*p = (SqlInfo*)arg;

   MYSQL
*mysql_test;
   MYSQL_RES
*ret;
   MYSQL_ROW row;

// char *server = "localhost";
// char *user = "root";
// char *passwd = "1234"; //伪密码
// char *db = "mysql";
   
   mysql_test
= mysql_init(NULL);
if (!mysql_real_connect(mysql_test, p->server.c_str(), p->user.c_str(), p->passwd.c_str(), p->db.c_str(), 0, NULL, 0))
   {
       fprintf(stderr,
"%s\n", mysql_error(mysql_test));
return NULL;
   }

if (mysql_query(mysql_test, "show databases"))
   {
       fprintf(stderr,
"%s\n", mysql_error(mysql_test));
return NULL;
   }
   ret
= mysql_use_result(mysql_test);

   printf(
"Show Databases:\n");
// while((row = mysql_fetch_row(ret)) != NULL)
// {
// printf("%s\n", row[0]);
// }

//equal to the below
   unsigned int num_fields;
   unsigned
int i;

   num_fields
= mysql_num_fields(ret);
while ((row = mysql_fetch_row(ret)))
   {
       unsigned
long *lengths;
       lengths
= mysql_fetch_lengths(ret);
for(i = 0; i < num_fields; i++)
       {
          printf(
"[%.*s] ", (int) lengths[i], row[i] ? row[i] : "NULL");
       }
       printf(
"\n");
   }

   mysql_free_result(ret);
   mysql_close(mysql_test);
}

int main(int argc, char* argv[])
{
if (argc < 5)
   {
       cout
<< "Usage: app server user passwd db" << endl;
return -1;
   }

   SqlInfo my_info;
   my_info.server
= argv[1];
   my_info.user
= argv[2];
   my_info.passwd
= argv[3];
   my_info.db
= argv[4];

   pthread_t thread1;

   pthread_create(
&thread1, NULL, showdatabase, (void*)&my_info);
   pthread_join(thread1,NULL);

return 0;
}

1、遇到的问题

1)error while loading shared libraries: libmysqlclient.so.16: cannot open shared object file: No such file or directory

再网上下载了一个so文件。

//locate libmysqlclient.so.16

复制文件到路径:

   /usr/local/mysql/lib/mysql/libmysqlclient.so.16

修改文件:

   vi /etc/ld.so.conf

   增加一行 /usr/local/mysql/lib/mysql

然后执行ldconfig生效。

2、关于C语言中调用mysql API

gcc -o showdata $(mysql_config --cflags) showdata.cpp  $(mysql_config --libs)

   mysql_config为MySQL中一个特殊的脚本,为编译MySQL客户端,并连接到MySQL服务器提供有用的信息。【3

   当然也要吧在makefile中指定如上选项,或

INC+=-I/usr/include/mysql
LIB=-lmysqlclient -lpthread -lssl

附:

mysql的安装:【45

要注意的一点是,安装的mysql版本要与操作系统版本匹配。

安装完后,通过以下命令设置密码:

/usr/bin/mysqladmin -u root password 'new-password'

/usr/bin/mysqladmin -u root -h love password 'new-password'

Alternatively you can run:

/usr/bin/mysql_secure_installation


You can start the MySQL daemon with:
rcmysql start
You can test the MySQL daemon with mysql-test package

参考


2http://blog.sina.com.cn/s/blog_4ab24dd50100wnkv.html

3http://blog.sina.com.cn/s/blog_59d470310100i16r.html

4http://www.iteye.com/topic/647152

5http://www.mysql.com/downloads/mysql/#downloads

【6】 http://wenku.baidu.com/view/5e093ddc5022aaea998f0fbc.html

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
5月前
|
SQL 运维 关系型数据库
MySQL 中 GRANT 操作会引起复制中断吗?
GRANT 操作并不是一个原子性操作,不管执行成功与否,都会触发一个隐式重载授权表的行为。 在生产环境中需要规范用户创建及授权的操作,不推荐使用 DML 语句去直接变更 mysql.user 表,可能会引发其他的问题,若使用了 DML 语句进行变更, 需要手工执行 flush privileges。
72 4
|
5月前
|
JavaScript 关系型数据库 MySQL
创建nodejs项目并接入mysql,完成用户相关的增删改查的详细操作
创建nodejs项目并接入mysql,完成用户相关的增删改查的详细操作
71 0
|
5月前
|
文字识别 小程序 安全
印刷文字识别操作报错合集之微信小程序调用API时路径总是返回不对,该如何处理
在使用印刷文字识别(OCR)服务时,可能会遇到各种错误。例如:1.Java异常、2.配置文件错误、3.服务未开通、4.HTTP错误码、5.权限问题(403 Forbidden)、6.调用拒绝(Refused)、7.智能纠错问题、8.图片质量或格式问题,以下是一些常见错误及其可能的原因和解决方案的合集。
|
5月前
|
文字识别 前端开发 API
印刷文字识别操作报错合集之通过HTTPS连接到OCR服务的API时报错,该如何处理
在使用印刷文字识别(OCR)服务时,可能会遇到各种错误。例如:1.Java异常、2.配置文件错误、3.服务未开通、4.HTTP错误码、5.权限问题(403 Forbidden)、6.调用拒绝(Refused)、7.智能纠错问题、8.图片质量或格式问题,以下是一些常见错误及其可能的原因和解决方案的合集。
|
5月前
|
存储 关系型数据库 文件存储
面试题MySQL问题之简单的SELECT操作在MVCC下加锁如何解决
面试题MySQL问题之简单的SELECT操作在MVCC下加锁如何解决
52 2
|
5月前
|
SQL 关系型数据库 MySQL
实时计算 Flink版操作报错合集之从mysql读数据写到hive报错,是什么原因
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
5月前
|
消息中间件 关系型数据库 MySQL
实时计算 Flink版操作报错合集之运行mysql to doris pipeline时报错,该如何排查
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
5月前
|
DataWorks 关系型数据库 MySQL
DataWorks操作报错合集之调用CreateQualityRule API时,BlockType参数为0,会报错:"blockType less than minimum",该怎么办
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
|
5月前
|
消息中间件 关系型数据库 MySQL
实时计算 Flink版操作报错合集之整库同步mysql到starRock提交任务异常,该如何处理
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
|
5月前
|
前端开发 JavaScript API
惊天揭秘!AJAX与Fetch API如何让你的前后端交互秒变‘神级操作’!
【7月更文挑战第15天】在Web开发中,AJAX和Fetch API革新了前后端交互,告别了表单提交带来的页面刷新。AJAX利用XMLHttpRequest实现部分页面更新,开启无刷新时代;Fetch API作为现代替代,以其简洁和Promise支持简化异步操作。从AJAX的先驱地位到Fetch API的进化,两者提升了Web应用的性能和用户体验,成为现代开发的必备技能。
59 2