Linux下C语言连接MySQL
本文出自 http://blog.csdn.net/shuangde800
C语言连接MySQL数据库
MYSQL * mysql_init(MYSQL *);
通常传递NULL给这个例程,他会返回一个指向新分配的连接句柄结构的指针。如果传递一个已有的结构,它将会重新初始化。这个例程在出错时返回NULL.
- MYSQL* mysql_real_connect(MYSQL* connection,
- const char *server_host,
- const char *sql_user_name,
- const char *sql_password,
- const char *db_name,
- unsigned int port_number,
- const char *unix_socket_name,
- unsigned int flags);
指针connection必须指向已经被mysql_init初始化过的结构。
注意server_host既可以是主机名,也可以是IP地址。如果连接本地,可以制定localhost来优化。
sql_user_name和sql_password的含义和它们的字面意思一样。如果登录名为NULL,则假设登录名为当前Linux用户的登录ID,如果密码为NULL,则假设密码为空。
port_number和unix_socket_name应该分别为0和NULL,除非你改变了MySQL安装的默认设置。他们将默认使用合适的值。
最后,flags参数用来对一些定义的位模式进行OR操作,使得改变使用协议的某些特性。
如果无法连接,则返回NULL。mysql_error函数可以提供有帮助的信息。
3. 使用完连接,通常在程序退出前,要调用函数mysql_close;
mysql_close的函数定义:
void mysql_close(MYSQL *connection);
将关闭连接。
连接MySQL的示例:
- #include <stdio.h>
- #include <stdlib.h>
- #include "mysql.h"
- int main (int argc, char *argv[]) {
- MYSQL *conn;
- // 步骤1: 初始化连接句柄
- conn = mysql_init(NULL);
- if (conn == NULL) { // 如果返回NULl说明初始化失败
- printf("mysql_init failed!\n");
- return EXIT_FAILURE;
- }
- // 步骤2:实际进行连接
- // 参数分别为,conn连接句柄,host是MySQL所在主机或地址,user用户名,password密码,database_name数据库名,后面的都是默认
- conn = mysql_real_connect(conn, "host", "user", "password", "database_name", 0, NULL, 0);
- if (conn) { // 连接成功
- printf("Connection success!\n");
- } else {
- printf("Connection failed!\n");
- }
- // 步骤3: 退出前关闭连接
- mysql_close(conn);
- return 0;
- }
编译和运行:
gcc -I/usr/include/mysql test.c -L/usr/lib/mysql -lmysqlclient -o app
错误处理
错误处理的两个函数:
- // 返回错误码
- unsigned int mysql_errno(MYSQL *connection);
- // 返回错误详细信息
- char* mysql_error(MYSQL *connection);
注意,当调用conn = mysql_real_connect(...), 时会遇到一个问题,因为它在失败时返回NULL指针,并没有提供一个错误码。但如果是将句柄作为一个变量,那么即使mysql_real_connect失败,也仍然能够处理它。
#include <stdio.h>
#include <stdlib.h>
#include "mysql.h"
#include "errmsg.h"
#include "mysqld_error.h" void Error(MYSQL* conn)
{
printf("Connection error %d: %s\n", mysql_errno(conn), mysql_error(conn));
} int main (int argc, char *argv[])
{
MYSQL conn; // 是变量而不是指针
mysql_init(&conn); // 注意取地址符&
if (mysql_real_connect(&conn, "192.168.137.246", "root", "", "test", , NULL, ))
{
printf("Connection success!\n");
mysql_close(&conn);
} else
{
fprintf(stderr, "Connection failed!\n");
if (mysql_errno(&conn))
{
fprintf(stderr, "Connection error %d: %s\n", mysql_errno(&conn), mysql_error(&conn));
}
}
return EXIT_SUCCESS;
}
Linux下C语言连接MySQL的更多相关文章
- Linux下的C#连接Mysql数据库
今天在尝试在 Linux 系统下使用C#连接数据库,发现网上这方面的信息很少,所以就写一篇博客记录一下. Linux下这里使用的是mono. 首先是缺少Mysql.Data.dll这个库的,所以需要安 ...
- Linux下C语言操作MySQL数据库
MySQL是Linux系统下广泛使用的开源免费数据库,是Linux应用程序数据存储的首选. Ubuntu下安装 […]
- Linux centos 7/ubantu下: 用 C 语言连接 MySQL数据库
前言:最近用IPC.socket做ATM.聊天项目,考虑到需要用到数据库,所以总结一下centos.ubantu环境下怎么用C语言操作数据库,例如常见的增删改查等! 一.Centos环境安装mysql ...
- Windows下用C语言连接Mysql注意问题
原文:Windows下用C语言连接Mysql注意问题 环境是:在VS6.0 安装Mysql后,我们需要相应的头文件以及lib文件,所以安装过程必须是完整安装.否则不会生成include文件夹哦~ 具体 ...
- linux 下C语言学习路线
UNIX/Linux下C语言的学习路线.一.工具篇“公欲善其事,必先利其器”.编程是一门实践性很强的工作,在你以后的学习或工作中,你将常常会与以下工具打交道, 下面列出学习C语言编程常常用到的软件和工 ...
- Unix和Linux下C语言学习指南
转自:http://www.linuxdiyf.com/viewarticle.php?id=174074 Unix和Linux下C语言学习指南 引言 尽管 C 语言问世已近 30 年,但它的魅力仍未 ...
- 在linux下安装并配置mysql数据库
在linux下安装并配置mysql数据库 工具/原料 MySql5.6 CentOS 方法/步骤 1 查找以前是否安装有mysql,使用下面命令: rpm -qa|grep -i mysql ...
- c语言连接mysql数据库的实现方法
C语言连接mysql数据库,需要相应的头文件和lib文件,如果你安装Mysql数据库,会在安装目录下找到这些库文件,如果没有安装,也可以在网上找到 我这里也有一份网上找到的:/201205/other ...
- R语言-连接MySQL数据库方法
版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] R语言连接数据库常用的方法有2种: 1.使用R数据库接口 连接MySQL,使用RMySQL包,使用前RMySQL包要先安 ...
随机推荐
- 安装 xadmin 报错: Command "python setup.py egg_info" failed with error code 1 in C:\Users\Python\AppData\Local\Temp\pip-install-1k1byg0p\xadmin\
报错详情 安装 xadmin 组件的时候报错 不论是命令行还是 pycharm 方式都不行 分析报错 按照报错提示是说 README.rst 文件的编码问题导致. 解决报错 通过 github 下载源 ...
- synchronized 关键字解析
synchronized 关键字解析 同步锁依赖于对象,每个对象都有一个同步锁. 现有一成员变量 Test,当线程 A 调用 Test 的 synchronized 方法,线程 A 获得 Test 的 ...
- Java 元编程及其应用
Java 元编程及其应用 首先,我们且不说元编程是什么,他能做什么.我们先来谈谈生产力. 同样是实现一个投票系统,一个是python程序员,基于django-framework,用了半小时就搭建了一个 ...
- nginx+php使用open_basedir限制站点目录防止跨站
以下三种设置方法均需要PHP版本为5.3或者以上.方法1)在Nginx配置文件中加入 fastcgi_param PHP_VALUE "open_basedir=$document_root ...
- Squid代理服务部署
构建Squid代理服务器1.配置IP地址 2.编译安装Squid软件[root@localhost ~]# tar -zxvf squid-3.4.6.tar.gz -C /usr/src/[root ...
- POJ 1845 Sumdiv(逆元)
题目链接:Sumdiv 题意:给定两个自然数A,B,定义S为A^B所有的自然因子的和,求出S mod 9901的值. 题解:了解下以下知识点 1.整数的唯一分解定理 任意正整数都有且只有唯一的方式 ...
- LOJ#6282. 数列分块入门 6
一个动态的插入过程,还需要带有查询操作. 我可以把区间先分块,然后每个块块用vector来维护它的插入和查询操作,但是如果我现在这个块里的vector太大了,我可能的操作会变的太大,所以这时候我需要把 ...
- hdu 4300 Clairewd’s message(扩展kmp)
Problem Description Clairewd is a member of FBI. After several years concealing in BUPT, she interce ...
- 三小时学会Kubernetes:容器编排详细指南
三小时学会Kubernetes:容器编排详细指南 如果谁都可以在三个小时内学会Kubernetes,银行为何要为这么简单的东西付一大笔钱? 如果你心存疑虑,我建议你不妨跟着我试一试!在完成本文的学习后 ...
- LOJ#2541 猎人杀
解:step1:猎人死了之后不下台,而是继续开枪,这样分母不变...... 然后容斥,枚举猎人集合s,钦定他们在1之后死.定义打到1的时候结束,枚举游戏在i轮时结束. 发现式子是一个1 + x + x ...