Linux:数据库c程序链接

本文介绍了如何使用C语言连接和操作MySQL数据库,包括连接服务器、查看数据库状态、创建数据库、插入数据、更新和删除记录,以及执行查询、处理结果集等基本操作。同时提供了一个简单的示例程序,演示了连接数据库并执行插入和查询语句的过程。
摘要由CSDN通过智能技术生成

1.连接服务器命令p
客户端链接服务器端

mysql -uroot -p

2.查看服务器启动状态

service mysql status

处于“running”状态即为运行状态

3.重启、停止、启动,数据库的命令

重启:/etc/init.d/mysql restart
停止:/etc/init.d/mysql stop
启动:/etc/init.d/mysql start

4.查看数据库

show databases;

在这里插入图片描述
4.创建数据库

create database 数据库名字;

在这里插入图片描述

5.在数据库创建表

create table stu()

在这里插入图片描述在这里插入图片描述

6.插入数据

insert into stu values("小王",23);

在这里插入图片描述
7.修改表中数据

"update stu set age=30 where name='小王'";

在这里插入图片描述
8.删除表中数据

"delete from stu where name='小王'";

在这里插入图片描述
9.查看当前表中数据条数

在这里插入图片描述

C语言访问mysql

1.连接数据库使用的头文件和库文件

#include<mysql/mysql.h>
#include<mysql.h>

程序中使用了mysql的有关函数接口,需要在链接时指定库名:Linux平台为-lmysqlclient

2.初始化连接句柄

MYSQL *mysql_init(MYSQL*mysql);

3.连接数据库

MYSQL *mysql_real_connect(MYSQL *mysql,const char *host,
                                 const char *user,const char *passwd,
                                 const char *db,unsigned int port,
                                 const char *unix_socket,
                                 unsigned long clientflag);

4.关闭连接

void mysql_close(MYSQL *mysql);

5.执行sql语句

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

6.提取结果

MYSQL_RES *mysql_store_result(MYSQL *sql);//一次性提取所有数据
MYSQL_RES *mysql_use_result(MYSQL *mysql);//一次提取一行数据

7.获取结果集中有多少行

unit64_t mysql_num_rows(MYSQL_RES *res);

8.取出结果集中的一行记录

MYSQL_ROW mysql_fetch_row(MYSQL_RES *result);

9.查看记录行的列数

unsigned int mysql_field_count(MYSQL *mysql);

10.释放结果集占用的内存

void mysql_free_result(MYSQL_ROW *result);

11.获取错误信息

unsigned int mysql_errno(MYSQL *mysql);//返回错误码
const char *mysql_error(MYSQL *mysql);//返回错误信息描述

12.一个简单的示例

#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<string.h>
#include<assert.h>
#include<mysql/mysql.h>

int main()
{
	MYSQL * mysql=mysql_init(NULL);
	if(mysql==NULL)
	{
		printf("mysql init err\n");
		exit(0);
	}
	  	mysql=mysql_real_connect(mysql,"127.0.0.1","root","111111","c215db",    3306,NULL,0);
	if(mysql==NULL)
	{
		printf("connext failed\n");
		exit(0);
	}
	
	char * sql="insert into stu values('小明',21)";
	int res=mysql_query(mysql,sql);
	if(res!=0)
	{
		printf("query sql err:%s\n",mysql_error(mysql));
	}
	
	mysql_close(mysql);
	exit(0);
}

在这里插入图片描述

  1 #include<stdio.h>
  2 #include<stdlib.h>
  3 #include<unistd.h>
  4 #include<string.h>
  5 #include<assert.h>
  6 #include<mysql/mysql.h>
  7 
  8 int main()
  9 {
 10     MYSQL * mysql=mysql_init(NULL);
 11     if(mysql==NULL)
 12     {
 13         printf("mysql init err\n");
 14         exit(0);
 15     }
 16 
 17     mysql=mysql_real_connect(mysql,"127.0.0.1","root","111111","c215db    ",3306,NULL,0);
 18     if(mysql==NULL)
 19     {
 20         printf("connext failed\n");
 21         exit(0);
 22     }
 23 
 24     //char * sql="insert into stu values('小明',21)";
 25     //char * sql="update stu set age=30 where name='小王'";
 26     //char * sql="delete from stu where name='小王'";
 27 
 28     char * sql="select * from stu";
 29     int res=mysql_query(mysql,sql);
 30     if(res!=0)
 31     {
 32         printf("query sql err:%s\n",mysql_error(mysql));
 33     }
 34 
 35     MYSQL_RES * mysql_res=mysql_store_result(mysql);//获取结果集
 36     if(mysql_res==NULL)
 37     {
 38         printf("提取数据失败:%s\n",mysql_error(mysql));
 39         exit(0);
 40     }
 41 
 42     int num=mysql_num_rows(mysql_res);//获取记录有多少行
 43     if(num==0)
 44     {
 45         printf("没有记录\n");
 46     }
 47     else
 48     {
 49         printf("当前记录条数:%d\n",num);
 50         for(int i=0;i<num;i++)
 51         {
 52
 53              MYSQL_ROW mysql_row=mysql_fetch_row(mysql_res);
 54              printf("name=%s,age=%s\n",mysql_row[0],mysql_row[1]);
 55         }
 56     }
 57 
 58     mysql_free_result(mysql_res);
 59     mysql_close(mysql);
 60 
 61     exit(0);
 62 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值