使用C语言访问MySQL数据库基础

这篇博客介绍了如何使用C语言连接和管理MySQL数据库,包括连接步骤、错误处理、执行SQL语句以及处理返回数据。通过示例代码展示了如何初始化连接、执行更新和查询操作,并解释了错误处理和结果集的解析。
摘要由CSDN通过智能技术生成

使用C语言访问MySQL数据库基础

一、MySQL管理

包含在MySQL发行版中的一些有用的工具程序使管理工作变得相当容易。

除mysqlshow命令以外,所有的MySQL命令都接受所示的3个标准参数

命令选项

参数

说明

   -u

用户名

在默认情况下,mysql工具会尝试把当前linux的用户名作为MySQL的用户名,可以使用-u参数来指定一个不同的用户名

   -p

[密码]

如果给出了-p参数但是未提供密码,系统会提示输入密码。

如果没有给出-p参数,MySQL命令将假设不需要密码

   -h

  主机名

用于连接位于不同主机上的服务器(这个参数对于本地服务器总是可以省略)

 

1、mysql命令

 #mysql –u rick –p database-name

 #mysql –u rick --password=secretpassworddatabase-name <sqlcommands.sql

 

当mysql客户端连接到服务器后,除了标准SQL92命令集外,还有以下特定命令也会被mysql支持

命令

可选的简短形式

说明

help 或?

\h或\?

显示命令列表

edit

\e

编辑命令。使用的编辑器由环境变量$EDITOR决定

exit或quit

\q

退出MySQL客户端

Go

\g

执行命令

source <filename>

\.

从指定文件执行SQL

Status

\s

显示服务器状态信息

System <command>

\!

执行一个系统命令

tee <filename>

\T

把所有文件的副本添加到指定文件中

Use <database>

\u

使用给定的数据库

    每个数据库都是一个独立的表格集,这使得我们可以外对不同的目的建立不同的数据库,并为每个数据库指定不同的用户,而只需要使用同一个数据库服务器就可以有效管理它们了。

2、mysqladmin  快速进行MySQL数据库管理的主要工具

mysqladmin支持的命令

命令

说明

create <database_name>

创建一个数据库

drop <database_name>

删除一个数据库

Password <new_password>

修改密码

Ping

检查服务器是否正在运行

reload

重载控制权限grant表

Status

提供服务器的状态

Shutdown

停止服务器

Variables

显示控制MySQL操作的变量及其当前值

Version

提供服务器的版本号以及它持续运行的时间

 

3、mysqldump

作用:以SQL命令集的形式将部分或整个数据库导出到一个单独文件中,该文件能被重新导入MySQL或其它的SQL RDBMS。它接受数据库名和表名作为参数

命令

说明

--add-drop-table

添加sql命令到输出文件,以在创建表的命令之前丢弃(删除)任何表

-e

使用扩展的insert语法,这不是sql标准,但是如果在正转储大量数据,那么当你试图重新加载这些数据到MySQL时,这将加速转储数据的加载速度

-t

只转储(备份)表中数据,而不是用来创建表的信息

-d

只转储(备份)表结构,而不是实际数据

例:#mysqldump –u rick –p db-name >db-name.dump

 

4、mysqlimport

作用:用于将批量数据导入到一个表中

通过使用mysqlimport,可以从一个输入文件中读取大量的文本数据。这个命令唯一的参数需求是一个文件名和一个数据库名。默认情况下,数据应以tab分隔符分开。

 

5、mysqlshow

作用:快速了解MySQL安装及其组成数据库的信息

l  不提供参数,它列出所有可用的数据库

l  以一个数据库为参数,它列出该数据库中的表

l  以数据训和表名为参数,它列出表中的列

l  以数据库、表和列为参数,它列出指定列的详细信息

 

二、连接例程

用C语言连接MySQL数据库包含两个步骤

l  初始化一个连接句柄结构

l  实际进行连接

 

1、  使用mysql_init来初始化连接句柄

#include “mysql.h”

MYSQL *mysql_init(MYSQL *);

返回值:通常传递NULL给这个例程,它会返回一个指向新分配的连接句柄结构的指针

        若传递一个已有的结构,它将被重新初始化。

        出错时返回NULL

 

2、  进行实际连接

#include “mysql.h”

MYSQL *mysql_real_connect(MYSQL *connection,

            const char*server_host,//localhost

            const char*sql_user_name,

            const char*sql_password,

            const char *db_name,

            unsigned intport_number,//端口号,一般为0

            const char*unix_socket_name,//套接字,一般为null

            unsigned int flags);

参数:connection 必须指向已经被mysql_init初始化过的结构

      Sql_user_name和sql_password如果登录名为NULL,则假设登录名为当前Linux用户的登录ID,

                   如果密码为NULL,将只能访问服务器上无需密码就可访问的数据,密码会在

                   通过网络传输前进行加密

      Port_number和unix_socket_name应该分别为0和NULL

      flags用来对一些定义的位模式进行OR操作

返回值:若无法连接,它将返回NULL,mysql_error函数可以提供有帮助的信息

 

3、  关闭连接

#include “mysql.h”

Void mysql_close(MYSQL *connection);

如果连接是由mysql_init建立的,MYSQL结构会被释放。指针将会失效并无法再次使用

 

4、  mysql_options例程

可以在mysql_init和mysql_real_connect之间调用设置一些选项

#include “mysql.h”

Int mysql_options(MYSQL *connection, enum option_to_set,  const char*argument);

说明:mysql_options例程一次只能设置一个选项,所以每设置一个选项就得调用它一次,同时,该例程必须出现在mysql_init和mysql_real_connect之间即可。

选 项

enum选项

实际参数类型

说明

MySQL_OPT_CONNECT_TIMEOUT

Const unsigned int *

连接超时之前的等待秒数

MySQL_OPT_COMPRESS

None, 使用NULL

网络连接中使用压缩机制

MySQL_INIT_COMMAND

Const char *

每次连接建立后发送的命令

返回值:一次成功的调用将返回0。因为它仅仅是用来设置标志,所以失败总是意味着使用了一个无效的选项。

 

例:如果要设置连接超时时间为7秒,其代码片断如下:

Unsigned intti

  • 0
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值