【Linux】Ubuntu下C语言访问MySQL数据库入门
使用的系统是Ubuntu 11.10.数据库是MySQL。
MySQL数据库环境配置
首先需要安装MySQL客户端和服务器,命令行安装方式为:
- sudo apt-get install mysql-server mysql-client
然后,要使用C语言编程访问数据库,需要另外安装一个开发包:
- sudo apt-get install libmysqlclient15-dev

在MySQL中建立相应数据库
首先以用户rick登录MySQL数据库(用户rick已经被root权限用户赋予了创建数据库等等的权限):

然后创建一个名为foo的数据库:
- CREATE DATABASE foo;
然后利用如下SQL语句创建表及插入数据:
- CREATE TABLE children(
- childno int(11) NOT NULL auto_increment,
- fname varchar(30),
- age int(11),
- PRIMARY KEY (childno)
- );
- INSERT INTO children(childno,fname,age) VALUES(1,'Jenny',21);
- INSERT INTO children(childno,fname,age) VALUES(2,'Andrew',17);
- INSERT INTO children(childno,fname,age) VALUES(3,'Gavin',8);
- INSERT INTO children(childno,fname,age) VALUES(4,'Duncan',6);
- INSERT INTO children(childno,fname,age) VALUES(5,'Emma',4);
- INSERT INTO children(childno,fname,age) VALUES(6,'Alex',15);
- INSERT INTO children(childno,fname,age) VALUES(7,'Adrian',9);
在MySQL命令行模式中执行方法如下:

MySQL数据库连接测试
然后采用如下C语言进行数据库连接测试connect1.c:
- #include <stdlib.h>
- #include <stdio.h>
- #include "mysql.h"
- int main(int argc,char *argv[])
- {
- MYSQL *conn_ptr;
- conn_ptr = mysql_init(NULL);
- if(!conn_ptr)
- {
- fprintf(stderr,"mysql_init failed\n");
- return EXIT_FAILURE;
- }
- conn_ptr = mysql_real_connect(conn_ptr,"localhost","rick","rick","foo",0,NULL,0);
- if(conn_ptr)
- printf("Connection success\n");
- else
- printf("Connection failed\n");
- mysql_close(conn_ptr);
- return EXIT_SUCCESS;
- }
执行结果:

注意的是:需要指定include库和库文件的路径名,以及指定链接的库模块mysqlclient。
如果不在开始的时候安装开发包,就会产生如下错误:

执行SQL语句进行数据操作
向数据库表children中插入一行:
- #include <stdlib.h>
- #include <stdio.h>
- #include "mysql.h"
- int main()
- {
- MYSQL my_connecyion;
- int res;
- mysql_init(&my_connecyion);
- if(mysql_real_connect(&my_connecyion,"localhost","rick","rick","foo",0,NULL,0))
- {
- printf("Connection success\n");
- //执行SQL语句
- res = mysql_query(&my_connecyion,"INSERT INTO children(fname,age) VALUES('Ann',3)");
- if(!res)
- printf("Inserted %lu rows\n",(unsigned long)mysql_affected_rows(&my_connecyion));
- else
- fprintf(stderr,"Insert error %d : %s \n",mysql_errno(&my_connecyion),mysql_error(&my_connecyion));
- mysql_close(&my_connecyion);
- }
- else{
- fprintf(stderr,"Connection failed\n");
- if(mysql_errno(&my_connecyion))
- fprintf(stderr,"Connection error %d : %s\n",mysql_errno(&my_connecyion),mysql_error(&my_connecyion));
- }
- return EXIT_SUCCESS;
- }
运行结果:


在这里特别需要注意的是:
函数mysql_affected_rows返回的是被一个更新操作修改的行数,而不是满足where子句的行数。
【Linux】Ubuntu下C语言访问MySQL数据库入门的更多相关文章
- Linux CentOS下安装、配置mysql数据库
假设要在Linux上做j2ee开发.首先得搭建好j2ee的开发环境.包含了jdk.tomcat.eclipse的安装(这个在之前的一篇随笔中已经有具体解说了Linux学习之CentOS(七)--Cen ...
- Linux下C语言操作MySQL数据库
MySQL是Linux系统下广泛使用的开源免费数据库,是Linux应用程序数据存储的首选. Ubuntu下安装 […]
- Windows7-32位系统下R语言链接mySQL数据库步骤
安装R和MySQL在此就不再多说了.网上有非常多教程能够找到.以下直接进入到odbc的安装流程. 1.下载安装mysql-connector-odbc-5.x.x-win32.msi 下载地址:htt ...
- Linux系统下实现远程连接MySQL数据库的方法教程
1.在服务器端开启远程访问首先进入mysql数据库,然后输入下面两个命令: grant all privileges on *.* to 'root'@'%' identified by 'passw ...
- C语言访问mysql数据库
mysql中新建的数据库为hyx,hyx中的表为my_schema,表中的数据为下图: 编写代码,访问表中的数据,测试代码如下: #include "stdafx.h" #incl ...
- Linux centos 7/ubantu下: 用 C 语言连接 MySQL数据库
前言:最近用IPC.socket做ATM.聊天项目,考虑到需要用到数据库,所以总结一下centos.ubantu环境下怎么用C语言操作数据库,例如常见的增删改查等! 一.Centos环境安装mysql ...
- Linux下eclipse及mysql安装,c++访问mysql数据库
这两天在学习linux下用c++访问mysql,碰到一堆问题,记录一下. 1.mysql安装: 公司的电脑是64位的,安装的是64为的RHEL4,安装如下三个包: MySQL-client-5.1.4 ...
- Linux下C++访问MySQL数据库
由于想要开始了解并学习用LAMP进行web开发,所以昨晚我在Fedora上安装了MySQL,学习了MySQL的几个常用命令.想着在学习进行web开发(PHP访问数据库)之前,先用我熟悉的C++连接数据 ...
- Linux(Ubuntu)下MySQL的安装与配置
转自:http://www.2cto.com/database/201401/273423.html 在Linux下MySQL的安装,我一直觉得挺麻烦的,因为之前安装时就是由于复杂的配置导致有点晕.今 ...
随机推荐
- Django学习系列之Python+Xadmin
项目树 引入xadmin pycharm在项目中创建存放xadmin的目录 右键项目名称-->pythonpackage-->输入名称:extra_app 拷贝xadmin代码到extra ...
- 魔兽 如何屏蔽F1键弹出帮助菜单
如下图所示,我在任何时候按F1键,都会自动弹出Windows帮助和支持,事实上这个功能很鸡肋,从来没用过,但是玩魔兽的时候确实必须的,F1控制英雄的,呵呵. 方法还是有的,在任务管理器中找到这个应 ...
- 华为OJ2288-合唱队(最长递增子序列)
一.题目描述 描述: N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学不交换位置就能排成合唱队形. 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1, 2, -, ...
- 【MySQL】Win7下修改MySQL5.5默认编码格式
一般安装MySQL程序过程中,有一步骤是选择MySQL的默认编码格式的,程序默认为Latin1编码格式,当然也可以选择第三个选项,手动选择gbk或utf8编码格式,以支持中文数据.如下图: 现在问题出 ...
- 每天记录一点:NetCore获得配置文件 appsettings.json vue-router页面传值及接收值 详解webpack + vue + node 打造单页面(入门篇) 30分钟手把手教你学webpack实战 vue.js+webpack模块管理及组件开发
每天记录一点:NetCore获得配置文件 appsettings.json 用NetCore做项目如果用EF ORM在网上有很多的配置连接字符串,读取以及使用方法 由于很多朋友用的其他ORM如S ...
- jeasyui控件事件和方法的使用方法
1.事件是在页面加载后就注册绑定: $(function () { ocr(); }); function ocr() { $('#dgTeacher').datagrid({ onClickRow: ...
- 2015/12/29 Java语言概述 操作中注意事项
java语言概述 ①版本分类:JavaSE 标准版 桌面开发 JavaEE 企业版 网络开发 JavaME 移动版 嵌入式开发(塞班系统 ...
- 如何调试Node.js
Debugging Node.js with Chrome DevTools https://nodejs.org/en/docs/guides/debugging-getting-started/ ...
- leetcode 784. Letter Case Permutation——所有BFS和DFS的题目本质上都可以抽象为tree,这样方便你写代码
Given a string S, we can transform every letter individually to be lowercase or uppercase to create ...
- C# 函数的传值与传址(转)
http://www.cnblogs.com/mdnx/archive/2012/09/04/2671060.html using System; using System.Collections.G ...