C语言操作MySQL从入门到精通

大家好,我是 V 哥。今天给大家整理的内容是关于使用 C 语言操作 MySQL 数据库的详细介绍,从入门到精通,并配有案例代码和注释,帮助小白快速上手。

基本操作

1. 环境准备

在开始之前,你需要安装 MySQL 数据库和 MySQL Connector/C 开发库。以 Ubuntu 系统为例,可以使用以下命令进行安装:

sudo apt-get update
sudo apt-get install mysql-server libmysqlclient-dev

2. 入门:连接到 MySQL 数据库

以下是一个简单的 C 语言程序,用于连接到 MySQL 数据库:

#include <mysql/mysql.h>
#include <stdio.h>int main() {// 初始化 MySQL 连接对象MYSQL *conn = mysql_init(NULL);if (conn == NULL) {// 初始化失败,输出错误信息fprintf(stderr, "mysql_init() failed\n");return 1;}// 尝试连接到 MySQL 数据库if (mysql_real_connect(conn, "localhost", "your_username", "your_password", "your_database", 0, NULL, 0) == NULL) {// 连接失败,输出错误信息fprintf(stderr, "mysql_real_connect() failed: %s\n", mysql_error(conn));// 关闭连接mysql_close(conn);return 1;}printf("Connected to MySQL successfully!\n");// 关闭连接mysql_close(conn);return 0;
}

代码解释

  • mysql_init(NULL):初始化一个 MySQL 连接对象。
  • mysql_real_connect():尝试连接到指定的 MySQL 数据库。需要提供主机名、用户名、密码、数据库名等信息。
  • mysql_error(conn):获取 MySQL 操作的错误信息。
  • mysql_close(conn):关闭 MySQL 连接。

3. 执行 SQL 查询语句

以下是一个执行简单 SQL 查询语句的示例:

#include <mysql/mysql.h>
#include <stdio.h>int main() {MYSQL *conn = mysql_init(NULL);if (conn == NULL) {fprintf(stderr, "mysql_init() failed\n");return 1;}if (mysql_real_connect(conn, "localhost", "your_username", "your_password", "your_database", 0, NULL, 0) == NULL) {fprintf(stderr, "mysql_real_connect() failed: %s\n", mysql_error(conn));mysql_close(conn);return 1;}// 定义要执行的 SQL 查询语句const char *query = "SELECT * FROM your_table";// 执行 SQL 查询语句if (mysql_query(conn, query) != 0) {// 查询失败,输出错误信息fprintf(stderr, "mysql_query() failed: %s\n", mysql_error(conn));mysql_close(conn);return 1;}// 获取查询结果集MYSQL_RES *result = mysql_store_result(conn);if (result == NULL) {// 获取结果集失败,输出错误信息fprintf(stderr, "mysql_store_result() failed: %s\n", mysql_error(conn));mysql_close(conn);return 1;}// 获取结果集中的行数和列数int num_fields = mysql_num_fields(result);MYSQL_ROW row;// 遍历结果集while ((row = mysql_fetch_row(result))) {for(int i = 0; i < num_fields; i++) {// 输出每一行的每一列数据printf("%s ", row[i] ? row[i] : "NULL");}printf("\n");}// 释放结果集mysql_free_result(result);// 关闭连接mysql_close(conn);return 0;
}

代码解释

  • mysql_query(conn, query):执行指定的 SQL 查询语句。
  • mysql_store_result(conn):将查询结果存储在内存中,并返回一个结果集对象。
  • mysql_num_fields(result):获取结果集中的列数。
  • mysql_fetch_row(result):从结果集中获取下一行数据。
  • mysql_free_result(result):释放结果集占用的内存。

4. 插入数据

以下是一个向数据库中插入数据的示例:

#include <mysql/mysql.h>
#include <stdio.h>
#include <string.h>int main() {MYSQL *conn = mysql_init(NULL);if (conn == NULL) {fprintf(stderr, "mysql_init() failed\n");return 1;}if (mysql_real_connect(conn, "localhost", "your_username", "your_password", "your_database", 0, NULL, 0) == NULL) {fprintf(stderr, "mysql_real_connect() failed: %s\n", mysql_error(conn));mysql_close(conn);return 1;}// 定义要插入的数据const char *name = "John Doe";int age = 30;// 构建插入 SQL 语句char query[256];snprintf(query, sizeof(query), "INSERT INTO your_table (name, age) VALUES ('%s', %d)", name, age);// 执行插入操作if (mysql_query(conn, query) != 0) {fprintf(stderr, "mysql_query() failed: %s\n", mysql_error(conn));mysql_close(conn);return 1;}printf("Data inserted successfully!\n");// 关闭连接mysql_close(conn);return 0;
}

代码解释

  • 使用 snprintf() 函数构建插入 SQL 语句。
  • mysql_query(conn, query):执行插入 SQL 语句。

5. 更新和删除数据

更新数据
#include <mysql/mysql.h>
#include <stdio.h>
#include <string.h>int main() {MYSQL *conn = mysql_init(NULL);if (conn == NULL) {fprintf(stderr, "mysql_init() failed\n");return 1;}if (mysql_real_connect(conn, "localhost", "your_username", "your_password", "your_database", 0, NULL, 0) == NULL) {fprintf(stderr, "mysql_real_connect() failed: %s\n", mysql_error(conn));mysql_close(conn);return 1;}// 构建更新 SQL 语句char query[256];snprintf(query, sizeof(query), "UPDATE your_table SET age = 31 WHERE name = 'John Doe'");// 执行更新操作if (mysql_query(conn, query) != 0) {fprintf(stderr, "mysql_query() failed: %s\n", mysql_error(conn));mysql_close(conn);return 1;}printf("Data updated successfully!\n");// 关闭连接mysql_close(conn);return 0;
}
删除数据
#include <mysql/mysql.h>
#include <stdio.h>
#include <string.h>int main() {MYSQL *conn = mysql_init(NULL);if (conn == NULL) {fprintf(stderr, "mysql_init() failed\n");return 1;}if (mysql_real_connect(conn, "localhost", "your_username", "your_password", "your_database", 0, NULL, 0) == NULL) {fprintf(stderr, "mysql_real_connect() failed: %s\n", mysql_error(conn));mysql_close(conn);return 1;}// 构建删除 SQL 语句char query[256];snprintf(query, sizeof(query), "DELETE FROM your_table WHERE name = 'John Doe'");// 执行删除操作if (mysql_query(conn, query) != 0) {fprintf(stderr, "mysql_query() failed: %s\n", mysql_error(conn));mysql_close(conn);return 1;}printf("Data deleted successfully!\n");// 关闭连接mysql_close(conn);return 0;
}

6. 错误处理和资源管理

在实际开发中,需要更加完善的错误处理和资源管理机制。例如,可以将数据库连接和操作封装成函数,方便复用和管理。

#include <mysql/mysql.h>
#include <stdio.h>
#include <string.h>// 连接到 MySQL 数据库
MYSQL* connect_to_mysql() {MYSQL *conn = mysql_init(NULL);if (conn == NULL) {fprintf(stderr, "mysql_init() failed\n");return NULL;}if (mysql_real_connect(conn, "localhost", "your_username", "your_password", "your_database", 0, NULL, 0) == NULL) {fprintf(stderr, "mysql_real_connect() failed: %s\n", mysql_error(conn));mysql_close(conn);return NULL;}return conn;
}// 执行 SQL 查询语句
int execute_query(MYSQL *conn, const char *query) {if (mysql_query(conn, query) != 0) {fprintf(stderr, "mysql_query() failed: %s\n", mysql_error(conn));return 1;}return 0;
}int main() {MYSQL *conn = connect_to_mysql();if (conn == NULL) {return 1;}const char *query = "SELECT * FROM your_table";if (execute_query(conn, query) != 0) {mysql_close(conn);return 1;}MYSQL_RES *result = mysql_store_result(conn);if (result == NULL) {fprintf(stderr, "mysql_store_result() failed: %s\n", mysql_error(conn));mysql_close(conn);return 1;}int num_fields = mysql_num_fields(result);MYSQL_ROW row;while ((row = mysql_fetch_row(result))) {for(int i = 0; i < num_fields; i++) {printf("%s ", row[i] ? row[i] : "NULL");}printf("\n");}mysql_free_result(result);mysql_close(conn);return 0;
}

通过以上步骤,你可以逐步掌握使用 C 语言操作 MySQL 数据库的基本方法,从连接数据库、执行查询、插入数据到更新和删除数据,并且学会了基本的错误处理和资源管理。

在C语言中,如何处理MySQL数据库连接错误?

在 C 语言中使用 MySQL 数据库时,数据库连接可能会因为各种原因失败,如网络问题、用户名密码错误、数据库服务未启动等。以下是详细介绍如何处理 MySQL 数据库连接错误的方法,并配有示例代码。

1. 连接过程及错误处理概述

在使用 C 语言连接 MySQL 数据库时,主要使用 mysql_init() 函数初始化 MySQL 连接对象,然后使用 mysql_real_connect() 函数尝试建立与数据库的连接。这两个函数都可能出现错误,需要进行相应的错误处理。

2. 具体错误处理方法

2.1 mysql_init() 函数错误处理

mysql_init() 函数用于初始化一个 MySQL 连接对象,如果初始化失败,会返回 NULL。可以通过检查返回值来判断是否初始化成功。

#include <mysql/mysql.h>
#include <stdio.h>int main() {MYSQL *conn = mysql_init(NULL);if (conn == NULL) {fprintf(stderr, "mysql_init() failed: Memory allocation error\n");return 1;}// 后续连接操作// ...mysql_close(conn);return 0;
}

在上述代码中,如果 mysql_init() 返回 NULL,说明内存分配失败,程序会输出错误信息并退出。

2.2 mysql_real_connect() 函数错误处理

mysql_real_connect() 函数用于建立与 MySQL 数据库的连接,如果连接失败,会返回 NULL。可以使用 mysql_error() 函数获取具体的错误信息。

#include <mysql/mysql.h>
#include <stdio.h>int main() {MYSQL *conn = mysql_init(NULL);if (conn == NULL) {fprintf(stderr, "mysql_init() failed: Memory allocation error\n");return 1;}if (mysql_real_connect(conn, "localhost", "your_username", "your_password", "your_database", 0, NULL, 0) == NULL) {fprintf(stderr, "mysql_real_connect() failed: %s\n", mysql_error(conn));mysql_close(conn);return 1;}printf("Connected to MySQL successfully!\n");mysql_close(conn);return 0;
}

在上述代码中,如果 mysql_real_connect() 返回 NULL,说明连接失败,程序会使用 mysql_error() 函数获取错误信息并输出,然后关闭连接并退出。

2.3 常见错误及处理建议
  • 网络问题:如果错误信息提示无法连接到数据库服务器,可能是网络问题。可以检查数据库服务器的 IP 地址和端口号是否正确,以及网络是否正常。
  • 用户名或密码错误:如果错误信息提示认证失败,可能是用户名或密码错误。可以检查用户名和密码是否正确。
  • 数据库不存在:如果错误信息提示数据库不存在,可能是指定的数据库名错误。可以检查数据库名是否正确。

3. 更完善的错误处理示例

以下是一个更完善的示例,包含了重试机制和详细的错误处理:

#include <mysql/mysql.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>#define MAX_RETRIES 3int main() {MYSQL *conn = mysql_init(NULL);if (conn == NULL) {fprintf(stderr, "mysql_init() failed: Memory allocation error\n");return 1;}int retries = 0;while (retries < MAX_RETRIES) {if (mysql_real_connect(conn, "localhost", "your_username", "your_password", "your_database", 0, NULL, 0) != NULL) {printf("Connected to MySQL successfully!\n");// 执行数据库操作// ...mysql_close(conn);return 0;}fprintf(stderr, "mysql_real_connect() failed (attempt %d/%d): %s\n", retries + 1, MAX_RETRIES, mysql_error(conn));retries++;if (retries < MAX_RETRIES) {// 等待一段时间后重试sleep(2);}}fprintf(stderr, "Failed to connect to MySQL after %d attempts.\n", MAX_RETRIES);mysql_close(conn);return 1;
}

在上述代码中,使用了一个重试机制,当连接失败时,会尝试重新连接,最多重试 MAX_RETRIES 次,每次重试之间等待 2 秒。如果多次重试后仍然失败,程序会输出错误信息并退出。

通过以上方法,可以在 C 语言中有效地处理 MySQL 数据库连接错误,提高程序的健壮性。

如何在C语言中优化MySQL数据库操作的性能?

在 C 语言中优化 MySQL 数据库操作的性能可以从多个方面入手,下面将从数据库连接管理、SQL 语句优化、数据处理与传输优化以及使用预处理语句等方面详细介绍:

1. 数据库连接管理

1.1 减少连接建立与关闭次数

频繁地建立和关闭数据库连接会带来较大的开销,因此应尽量复用已有的连接。可以采用连接池的思想,在程序启动时建立一定数量的数据库连接,后续操作从连接池中获取连接,使用完毕后归还连接,而不是每次操作都重新建立连接。

以下是一个简单的连接复用示例:

#include <mysql/mysql.h>
#include <stdio.h>MYSQL *conn;void init_connection() {conn = mysql_init(NULL);if (conn == NULL) {fprintf(stderr, "mysql_init() failed\n");return;}if (mysql_real_connect(conn, "localhost", "your_username", "your_password", "your_database", 0, NULL, 0) == NULL) {fprintf(stderr, "mysql_real_connect() failed: %s\n", mysql_error(conn));mysql_close(conn);return;}
}void close_connection() {mysql_close(conn);
}int main() {init_connection();// 执行多次数据库操作const char *query1 = "SELECT * FROM your_table";if (mysql_query(conn, query1) != 0) {fprintf(stderr, "mysql_query() failed: %s\n", mysql_error(conn));}const char *query2 = "INSERT INTO your_table (column1, column2) VALUES ('value1', 'value2')";if (mysql_query(conn, query2) != 0) {fprintf(stderr, "mysql_query() failed: %s\n", mysql_error(conn));}close_connection();return 0;
}
1.2 合理设置连接超时时间

mysql_real_connect 函数中可以设置连接超时时间,避免长时间等待无响应的连接请求。

MYSQL *conn = mysql_init(NULL);
if (conn != NULL) {mysql_options(conn, MYSQL_OPT_CONNECT_TIMEOUT, &(unsigned int){5}); // 设置连接超时时间为 5 秒if (mysql_real_connect(conn, "localhost", "your_username", "your_password", "your_database", 0, NULL, 0) == NULL) {fprintf(stderr, "mysql_real_connect() failed: %s\n", mysql_error(conn));mysql_close(conn);}
}

2. SQL 语句优化

2.1 避免使用 SELECT *

只选择需要的列,减少数据传输量和数据库处理开销。例如:

const char *query = "SELECT column1, column2 FROM your_table WHERE condition";
if (mysql_query(conn, query) != 0) {fprintf(stderr, "mysql_query() failed: %s\n", mysql_error(conn));
}
2.2 合理使用索引

在数据库表中为经常用于查询条件、排序和连接的列创建索引,能显著提高查询速度。在 C 语言代码中,确保 SQL 查询语句能够利用这些索引。例如,如果 your_table 表的 column1 列上有索引,查询时使用该列作为条件:

const char *query = "SELECT column1, column2 FROM your_table WHERE column1 = 'value'";
if (mysql_query(conn, query) != 0) {fprintf(stderr, "mysql_query() failed: %s\n", mysql_error(conn));
}
2.3 批量操作

对于插入、更新和删除操作,尽量使用批量操作。例如,批量插入数据:

const char *query = "INSERT INTO your_table (column1, column2) VALUES ('value1', 'value2'), ('value3', 'value4')";
if (mysql_query(conn, query) != 0) {fprintf(stderr, "mysql_query() failed: %s\n", mysql_error(conn));
}

3. 数据处理与传输优化

3.1 减少不必要的数据传输

在查询数据时,根据实际需求进行过滤和排序,避免将大量不必要的数据从数据库传输到应用程序。例如,使用 LIMIT 关键字限制返回的记录数:

const char *query = "SELECT column1, column2 FROM your_table WHERE condition LIMIT 10";
if (mysql_query(conn, query) != 0) {fprintf(stderr, "mysql_query() failed: %s\n", mysql_error(conn));
}
3.2 优化数据类型

在数据库表设计时,选择合适的数据类型,避免使用过大的数据类型,以减少数据存储和传输的开销。在 C 语言中,正确处理不同的数据类型,避免数据类型转换带来的性能损失。

4. 使用预处理语句

预处理语句可以减少 SQL 语句的解析和编译次数,提高多次执行相同结构 SQL 语句的性能。以下是一个使用预处理语句插入数据的示例:

#include <mysql/mysql.h>
#include <stdio.h>int main() {MYSQL *conn = mysql_init(NULL);if (conn == NULL) {fprintf(stderr, "mysql_init() failed\n");return 1;}if (mysql_real_connect(conn, "localhost", "your_username", "your_password", "your_database", 0, NULL, 0) == NULL) {fprintf(stderr, "mysql_real_connect() failed: %s\n", mysql_error(conn));mysql_close(conn);return 1;}MYSQL_STMT *stmt = mysql_stmt_init(conn);if (stmt == NULL) {fprintf(stderr, "mysql_stmt_init() failed\n");mysql_close(conn);return 1;}const char *query = "INSERT INTO your_table (column1, column2) VALUES (?, ?)";if (mysql_stmt_prepare(stmt, query, strlen(query)) != 0) {fprintf(stderr, "mysql_stmt_prepare() failed: %s\n", mysql_stmt_error(stmt));mysql_stmt_close(stmt);mysql_close(conn);return 1;}MYSQL_BIND bind[2];memset(bind, 0, sizeof(bind));char value1[20] = "test_value1";char value2[20] = "test_value2";bind[0].buffer_type = MYSQL_TYPE_STRING;bind[0].buffer = value1;bind[0].buffer_length = strlen(value1);bind[1].buffer_type = MYSQL_TYPE_STRING;bind[1].buffer = value2;bind[1].buffer_length = strlen(value2);if (mysql_stmt_bind_param(stmt, bind) != 0) {fprintf(stderr, "mysql_stmt_bind_param() failed: %s\n", mysql_stmt_error(stmt));mysql_stmt_close(stmt);mysql_close(conn);return 1;}if (mysql_stmt_execute(stmt) != 0) {fprintf(stderr, "mysql_stmt_execute() failed: %s\n", mysql_stmt_error(stmt));}mysql_stmt_close(stmt);mysql_close(conn);return 0;
}

通过上述方法,可以在 C 语言中有效地优化 MySQL 数据库操作的性能。

最后

以上是 V 哥整理的在 C 语言开发中,操作 MySQL 数据库的案例讲解,希望可以帮助大家在学习 C 语言时能够快速上手,关注威哥爱编程,全栈开发就你行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/32468.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#实现本地Deepseek模型及其他模型的对话v1.4

前言 系 统&#xff1a;Window11 开发工具&#xff1a;Visual Studio 2022 相关技术&#xff1a;C# 、WPF .Net 8.0 1、C#实现本地AI聊天功能 WPFOllamaSharpe实现本地聊天功能,可以选择使用Deepseek 及其他模型。 新增根据聊天记录回复的功能。 优化了部分ViewModel&#xff…

若依框架-给sys_user表添加新字段并获取当前登录用户的该字段值

目录 添加字段 修改SysUser类 修改SysUserMapper.xml 修改user.js 前端获取字段值 添加字段 若依框架的sys_user表是没有age字段的&#xff0c;但由于业务需求&#xff0c;我需要新添加一个age字段&#xff1a; 修改SysUser类 添加age字段后&#xff0c;要在SysUser类 …

用Qt手搓AI助手,挑战24小时开发DeepSeek Assistant!

一、项目需求分析与技术选型 DeepSeekAssistant是一款基于深度求索&#xff08;DeepSeek&#xff09;API的智能对话助手&#xff0c;核心需求包括&#xff1a; 用户界面友好&#xff1a;支持多轮对话展示数据持久化&#xff1a;历史记录存储与检索异步网络通信&#xff1a;AP…

linux 软件扩展GPU显存

概述 共享内存可以通过 Unified Memory&#xff08;统一内存&#xff09;来实现&#xff0c;它允许 CPU 和 GPU 共享相同的内存地址空间&#xff0c;从而方便数据的传输和访问。 利用该技术可解决家用GPU 机器学习时显存不足的问题 &#xff08;注&#xff1a; 虽然解决了爆显…

Linux——进程初步

学进程前我们需要知道什么&#xff1f; 一、冯诺依曼体系结构 图中就是我们电脑运作时的大致工作流程&#xff0c;其中输入设备、输出设备我们也叫外设。其中&#xff0c;输入设备有比如键盘、鼠标、磁盘、摄像头等。输出设备有显示器、磁盘、打印机等。图中的存储器我们也叫内…

LeetCode-122. 买卖股票的最佳时机 II

其实这题画个折线图就很清晰了&#xff0c;因为我们每天都可以买卖股票&#xff0c;所有我们就只计算上升趋势的股票收益就好了&#xff0c;最小刻度为1&#xff0c;进行差值计算&#xff0c;取总和。 var maxProfit function(prices){let sum0;for(let i1;i<prices.leng…

关于前后端整合和打包成exe文件的个人的总结和思考

前言 感觉有很多东西&#xff0c;不知道写什么&#xff0c;随便写点吧。 正文 前后端合并 就不说怎么开发的&#xff0c;就说点个人感觉重要的东西。 前端用ReactViteaxios随便写一个demo&#xff0c;用于CRUD。 后端用Django REST Framework。 设置前端打包 import { …

Vue | 开学第一课!零基础教程

目录 背景介绍 安装方式 下载环境软件 NodeJS手册 如何查看node版本 镜像源 完整流程 创建根文件夹并拖进 VSCode 调用控制台 安装 vite 脚手架 配置项目 安装依赖 启动项目 查看页面 问题 创建项目失败 解决方法 权限问题 解决方法 其他问题 背景介绍 今…

泛微ecode的页面开发发送请求参数携带集合

1.在开发过程中我们难免遇见会存在需要将集合传递到后端的情况&#xff0c;那么这里就有一些如下的注意事项&#xff0c;如以下代码&#xff1a; // 新增action.boundasync addQuestion(formData) {var theList this.questionAnswerList;var questionAnswerListArray new Ar…

Tomato靶机攻略

将tomato改为NAT模式 扫描ip arp-scan -l 扫描端口&#xff0c;发现ssh服务端口从22改为2211 扫描目录 发现http://192.168.31.134/antibot_image/ 访问 查看所有php文件的源码&#xff0c;看看有什么不同的地方 在info.php的源码中发现问题 在输入后&#xff0c;成功显示…

EasyRTC嵌入式音视频通话SDK:基于纯C语言的跨平台实时通信系统设计与实践

随着物联网、移动互联网的快速发展&#xff0c;实时音视频通信技术在智能硬件、远程协作、工业控制等领域广泛应用。然而&#xff0c;跨平台兼容性差、资源占用高、定制化难等问题&#xff0c;仍是传统RTC方案的痛点。 EasyRTC嵌入式音视频通话SDK凭借纯C语言设计与全平台覆盖…

HCIP复习拓扑练习(修改版)

拓扑&#xff1a; 实际&#xff1a; 需求&#xff1a; 需求分析 1.这意味着学校内部网络能够正常解析域名并进行互联网访问。 2. PC1和PC2处于同一个内网192.168.1.0/24&#xff0c;其中PC1有权限访问外部网段3.3.3.0/24&#xff0c;而PC2没有。这涉及ACL&#xff08;访问控制…

vue-next-admin修改配置指南

目录 1.如何开启侧边栏logo 2.修改侧边栏顶部的logo与文字 3.修改侧边栏路由logo 4.浏览器标题栏图标与文字修改 5.修改侧边栏的背景颜色、顶部导航栏背景颜色、字体颜色、激活时颜色等 6.去除或添加修改右上方放大、信息、头像昵称&#xff08;登录获取之后存储进行修改图…

ruoyi-cloud-plus编译记录-1

dockerfile部署jar 添加一个run configuration ‘ruoyi-nacos’ run configuration 参考Docker - 在IntelliJ IDEA中一键部署项目 - hucat - 博客园 jar包编译不成功&#xff0c;没有jar&#xff0c;docker部署nacos就没法进行下去 参考链接 maven 构建报错 This failure was…

【算法day8】整数反转

整数反转 https://leetcode.cn/problems/reverse-integer/description/ class Solution { public:int reverse(int x) {int MAX_LENGTH 11; // 32位整数的最大数字的位数int* num (int*)calloc(sizeof(int), MAX_LENGTH); //用于保存进位每一位的数字int current x;int pos…

MySQL库和表的操作详解:从创建库到表的管理全面指南

目录 一、MySQL库的操作详解 〇、登录MySQL 一、数据库的创建与字符集设置 1. 创建数据库的语法 2. 创建数据库示例 查看创建出来的文件: bash下查看MySQL创建的文件 二、字符集与校验规则 1. 查看系统默认设置 2. 查看支持的字符集与校验规则 3. 校验规则对查询的影响…

Linux中的基本指令(上)

目录 ls指令 判断linux中文件 pwd指令 认识路径 ​编辑 绝对路径/相对路径 cd指令 简要理解用户 理解家目录 echo指令和printf指令 touch指令 mkdir指令 cat指令 tree指令 rmdir指令和rm指令 man指令 cp指令 which指令 alias 指令 date指令 cal指令 理解…

WPF 与 GMap.NET 结合实现雷达目标动态显示与地图绘制

概述 雷达上位机是雷达系统中用于数据可视化、分析和控制的核心软件。本文将介绍如何使用 C# 和 WPF 框架开发一个雷达上位机程序&#xff0c;主要功能包括&#xff1a; 显示目标轨迹&#xff1a;在界面上实时绘制雷达探测到的目标轨迹。点击显示详细信息&#xff1a;用户点击…

「string」笔记

参考&#xff1a;比特鹏哥 1. string string是一种类型&#xff0c;指的是字符串&#xff0c;比字符数组更高级 头文件 <string> #include <string>int main() {string a;//未初始化string b "good good";//初始化string c("good sfternoon&q…

AutoGen使用学习

AutoGen使用学习 上篇文件使用使用【autoGenchainlitdeepSeek】实现【多角色、多用户、多智能体对话系统】&#xff0c;本次系统的学习autoGen的使用方法 文章目录 AutoGen使用学习[toc]1-核心知识点2-参考网址3-实战案例1-autoGen安装和基础使用主要功能安装方法使用示例注意事…