C语言中的数据库table操作 (c 数据库 table)
C语言是一种通用型的计算机编程语言,广泛应用于系统软件、应用软件、游戏开发以及数据库开发等领域。在数据库开发领域中,C语言可以通过操作数据表来实现对数据的管理和处理。
1. Table的概念
Table是数据库中最基本的数据结构,也是存储数据的最主要方式。Table由若干行和若干列组成,每一行代表一个实体,每一列代表一个数据项。数据库Table的设计需要遵循一定的规则,比如要有主键、每一列具有相应的数据类型等。
2. C语言中的Table操作
C语言中可以通过一系列API来操作数据库Table,主要包括以下几个部分:
2.1. 连接数据库
在C语言中连接数据库需要使用到相关数据库的库文件。常用的数据库库文件包括MySQL、SQLite、Oracle等。以MySQL为例,连接数据库的函数定义如下:
MYSQL *mysql_init(MYSQL *mysql);
2.2. 创建Table
创建Table是指在数据库中创建一个新表格。需要指定表格的名称,以及每一列所存储数据的数据类型。以MySQL为例,创建Table的函数定义如下:
int mysql_query(MYSQL *mysql, const char *query);
2.3. 插入数据
插入数据是指向表格中添加一行数据,需要指定每一列所对应的数据项的值。以MySQL为例,插入数据的函数定义如下:
int mysql_query(MYSQL *mysql, const char *query);
2.4. 更新数据
更新数据是指修改表格中已有数据的值,需要指定需要更新数据所在行、列的位置及其新值。以MySQL为例,更新数据的函数定义如下:
int mysql_query(MYSQL *mysql, const char *query);
2.5. 查询数据
查询数据是指从表格中获取一些数据,可以根据一定的条件进行筛选。以MySQL为例,查询数据的函数定义如下:
MYSQL_RES *mysql_query(MYSQL *mysql, const char *query);
3. 应用举例
下面通过一个简单的应用程序来展示如何在C语言中操作数据库Table。假设有一个学生管理系统,需要实现以下功能:
– 创建学生信息表格,包括学生姓名、学号和年龄;
– 添加学生信息;
– 修改学生年龄;
– 删除学生信息;
– 查询学生信息。
具体代码实现如下:
#include
#include
#include
#include
#define HOST “localhost”
#define USER “root”
#define PASSWORD “password”
#define DB_NAME “student”
// 定义学生信息结构体
typedef struct {
int id;
char name[20];
int age;
} Student;
// 连接MySQL数据库
MYSQL *connect_db()
{
MYSQL *mysql = mysql_init(NULL);
if (mysql_real_connect(mysql, HOST, USER, PASSWORD, DB_NAME, 0, NULL, 0))
{
printf(“Connect to MySQL successfully!\n”);
return mysql;
}
else
{
printf(“Fl to connect to MySQL!\n”);
return NULL;
}
}
// 创建学生信息表格
void create_student_table(MYSQL *mysql)
{
// 定义创建Table的SQL语句
char *sql = “CREATE TABLE IF NOT EXISTS student_info (“
“id INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY,”
“name VARCHAR(20) NOT NULL,”
“age INT(3) NOT NULL)”;
// 执行SQL
if (mysql_query(mysql, sql))
{
printf(“Fl to create student_info table: %s\n”, mysql_error(mysql));
}
else
{
printf(“Create student_info table successfully!\n”);
}
}
// 添加学生信息
void add_student_info(MYSQL *mysql)
{
// 读取学生信息
Student student;
printf(“Please input student name: “);
scanf(“%s”, student.name);
printf(“Please input student age: “);
scanf(“%d”, &student.age);
// 定义插入数据的SQL语句
char sql[100];
sprintf(sql, “INSERT INTO student_info (name, age) VALUES (‘%s’, %d)”, student.name, student.age);
// 执行SQL
if (mysql_query(mysql, sql))
{
printf(“Fl to add student info: %s\n”, mysql_error(mysql));
}
else
{
printf(“Add student info successfully!\n”);
}
}
// 修改学生年龄
void update_student_age(MYSQL *mysql)
{
// 读取学生ID和新的年龄值
int id, age;
printf(“Please input student id: “);
scanf(“%d”, &id);
printf(“Please input new age: “);
scanf(“%d”, &age);
// 定义更新数据的SQL语句
char sql[100];
sprintf(sql, “UPDATE student_info SET age = %d WHERE id = %d”, age, id);
// 执行SQL
if (mysql_query(mysql, sql))
{
printf(“Fl to update student age: %s\n”, mysql_error(mysql));
}
else
{
printf(“Update student age successfully!\n”);
}
}
// 删除学生信息
void delete_student_info(MYSQL *mysql)
{
// 读取学生ID
int id;
printf(“Please input student id: “);
scanf(“%d”, &id);
// 定义删除数据的SQL语句
char sql[100];
sprintf(sql, “DELETE FROM student_info WHERE id = %d”, id);
// 执行SQL
if (mysql_query(mysql, sql))
{
printf(“Fl to delete student info: %s\n”, mysql_error(mysql));
}
else
{
printf(“Delete student info successfully!\n”);
}
}
// 查询学生信息
void query_student_info(MYSQL *mysql)
{
// 定义查询数据的SQL语句
char *sql = “SELECT * FROM student_info”;
// 执行SQL并返回结果
if (mysql_query(mysql, sql))
{
printf(“Fl to query student info: %s\n”, mysql_error(mysql));
}
else
{
MYSQL_RES *result = mysql_store_result(mysql);
if (result == NULL)
{
printf(“Fl to get query result: %s\n”, mysql_error(mysql));
}
else
{
// 打印查询结果
MYSQL_ROW row;
while ((row = mysql_fetch_row(result)))
{
printf(“ID: %s, Name: %s, Age: %s\n”, row[0], row[1], row[2]);
}
mysql_free_result(result);
}
}
}
// 主函数入口
int mn()
{
MYSQL *mysql = connect_db();
if (mysql == NULL)
{
return 0;
}
create_student_table(mysql);
int running = 1;
while (running)
{
// 读取用户输入的命令
printf(“\nPlease input command:\n”
“1. Add student info\n”
“2. Update student age\n”
“3. Delete student info\n”
“4. Query student info\n”
“0. Exit\n”);
char cmd[10];
scanf(“%s”, cmd);
// 执行相应的命令
switch (cmd[0])
{
case ‘1’:
add_student_info(mysql);
break;
case ‘2’:
update_student_age(mysql);
break;
case ‘3’:
delete_student_info(mysql);
break;
case ‘4’:
query_student_info(mysql);
break;
case ‘0’:
running = 0;
break;
default:
printf(“Invalid command!\n”);
break;
}
}
mysql_close(mysql);
return 0;
}
4.