linux C读取数据库
上次我们已经共同学习了在Linux下C连接数据库,下面一起学习用C语言来操作数据库。
1,首先要打开mysql的服务
[root@bogon ~]# service mysqld status
mysqld 已停
[root@bogon ~]# service mysqld start
启动 MySQL: [确定]
[root@bogon ~]#
此时mysql服务已打开
下面我们来读取数据库的内容
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| data |
| mysql |
| test |
+--------------------+
4 rows in set (0.00 sec)
mysql> use test;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> select * from product;
+------+-------+-------+------+
| code | name | price | num |
+------+-------+-------+------+
| 1001 | apple | 2.5 | 8 |
| 1003 | cake | 2.5 | 1 |
| 1002 | pen | 1 | 5 |
+------+-------+-------+------+
3 rows in set (0.00 sec)
mysql>
好了,下面我们用代码来测试,命名为 readdata.c
#include<stdio.h>
#include<stdlib.h>
#include "mysql.h" #define N 10
typedef struct Data
{
char code[];
char name[];
float price;
int num;
}Data;
MYSQL *conn_ptr;
int main()
{
void update_data(Data obj);
void conn_data(MYSQL *conn_ptr); printf("Reading database...\n");
read_data();
return ;
} /***********************/
/** Connect Database **/
/***********************/
void conn_data(MYSQL *conn_ptr)
{
conn_ptr=mysql_init(NULL); //连接初始化
if(!conn_ptr)
{
fprintf(stderr, "mysql_init failed\n");
exit ();
//return EXIT_FAILURE;
}
conn_ptr = mysql_real_connect(conn_ptr, "localhost", "root","","test", , NULL, ); //建立实际连接
//参数分别为:初始化的连接句柄指针,主机名(或者IP),用户名,密码,数据库名,0,NULL,0)后面三个参数在默认安装mysql>的情况下不用改
if(conn_ptr)
{
printf("Connection success\n");
}
else
{
printf("Connection failed\n");
}
mysql_close(conn_ptr);
} /*******************/
/** read delete **/
/******************/
int read_data()
{
MYSQL *conn_ptr;
conn_ptr=mysql_init(NULL); //连接初始化
if(!conn_ptr)
{
fprintf(stderr, "mysql_init failed\n");
exit ();
return EXIT_FAILURE;
}
conn_ptr = mysql_real_connect(conn_ptr, "localhost", "root","","test", , NULL, ); //建立实际连接
//参数分别为:初始化的连接句柄指针,主机名(或者IP),用户名,此处密码为空,数据库名,0,NULL,0)后面三个参数在默认安装mysql>的情况下不用改
if(conn_ptr)
{
printf("Connection success\n");
}
else
{
printf("Connection failed\n");
} MYSQL_RES *res_ptr;
MYSQL_ROW sqlrow;
int res = mysql_query(conn_ptr, "select * from product ");
if(res)
{
printf("select error: %s\n", mysql_error(conn_ptr));
}
else {
res_ptr = mysql_store_result(conn_ptr);
if(res_ptr)
{
printf("********************\n");
printf("Retrieved %lu rows\n", (unsigned long)mysql_num_rows (res_ptr));
printf("********************\n");
printf("Code\tName\tPrice\tNumber\n");
while (sqlrow = mysql_fetch_row(res_ptr))
{
unsigned int field_count;
field_count =;
unsigned int field_num=; while(field_count < mysql_field_count(conn_ptr))
{
printf("%s\t", sqlrow[field_count]);
field_count++;
}
printf("\n");
}
if(mysql_errno(conn_ptr))
{
printf("Retrive error : %s\n", mysql_error(conn_ptr));
}
}
mysql_free_result(res_ptr);
mysql_close(conn_ptr); //关闭连接
return EXIT_SUCCESS;
}
}
那就可以运行程序了
[root@bogon ~]# gcc -I/usr/include/mysql readdata.c -lmysqlclient -L/usr/lib/mysql -o read
[root@bogon ~]# ./read
Reading database...
Connection success
********************
Retrieved 3 rows
********************
Code Name Price Number
1001 apple 2.5 8
1003 cake 2.5 1
1002 pen 1 5
[root@bogon ~]#
实验发现和从数据库中读取的完全相同,说明读取数据库已成功。
下面我们可以对其进行典型的“增删查改”了。
linux C读取数据库的更多相关文章
- Linux同平台数据库整体物理迁移
Linux同平台数据库整体物理迁移 需求:A机器不再使用,要将A机器的Oracle迁移到B机器. 之前写过类似需求的文章:http://www.cnblogs.com/jyzhao/p/3968504 ...
- 读取数据库数据,并将数据整合成3D饼图在jsp中显示
首先我将生成饼图的方法独立写成一个PieChar.java类,详细代码如下:(数据库需要自己建,如有需要的话) import java.io.IOException; import java.sql. ...
- jdbc读取数据库,表相关信息(含注释)
读取数据库中的所有的表名 private Set<String> getTableNameByCon(Connection con) { Set<String> set = n ...
- 解决虚拟机linux端mysql数据库无法远程访问
解决虚拟机linux端mysql数据库无法远程访问 1. 在控制台执行 mysql -u root -p mysql,CentOS系统提示输入数据库root用户的密码,输入完成后即进入mysql控制台 ...
- Solaris 和linux 之oracle 数据库的安装
本篇博文前面是一些基础知识介绍,后面才是总结篇. 一.在solaris上面装oracle 10g教程 目前官网已经没有32位的oracle11g了,取而代之的都是64位的oracle11g,为了能在3 ...
- PHP 开发 APP 接口 学习笔记与总结 - APP 接口实例 [2] 首页 APP 接口开发方案 ① 读取数据库方式
方案一:读取数据库方式 从数据库读取信息→封装→生成接口数据 应用场景: 数据时效性比较高的系统 方案二:读取缓存方式 从数据库获取信息(第一次设置缓存或缓存失效时)→封装(第一次设置缓存或缓存失效时 ...
- JS使用ActiveXObject读取数据库代码示例(只支持IE)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 编写SqlHelper使用,在将ExecuteReader方法封装进而读取数据库中的数据时会产生Additional information: 阅读器关闭时尝试调用 Read 无效问题,解决方法与解释
在自学杨中科老师的视频教学时,拓展编写SqlHelper使用,在将ExecuteReader方法封装进而读取数据库中的数据时 会产生Additional information: 阅读器关闭时尝试调用 ...
- C#使用SqlDataReader读取数据库数据时CommandBehavior.CloseConnection参数的作用
主要用在ExecuteReader(c)中,如果想要返回对象前不关闭数据库连接,须要用CommandBehavior.CloseConnection: CloseConnection解决了流读取数据模 ...
随机推荐
- uva 310 L--system(隐式图搜索+字符串处理)
L-system A D0L (Deterministic Lindenmayer system without interaction) system consists of a finite ...
- [Regular Expressions] Find a String that Precedes Another String ?= , ?!
Let's image tow cases for the following string: var str = `foo foobar foobaz fooboo` First of all: w ...
- spring aop获取目标对象的方法对象(包括方法上的注解)
这两天在学习权限控制模块.以前看过传智播客黎活明老师的巴巴运动网视频教程,里面就讲到权限控制的解决方案,当时也只是看看视频,没有动手实践,虽说看过几遍,可是对于系统中的权限控制还是很迷茫,所以借着这次 ...
- node 安装express
环境:win7 64位旗舰版 1 安装nodejs 2 安装npm 3 安装express 重点介绍安装express,前提是你已经安装nodejs和npm了. 1 安装express npm ins ...
- 细讲encodeURI和encodeURIComponent以及escape的区别与应用
首先,我们都知道这三个东西都是用来编码的 先来说encodeURI()和encodeURIComponent() 这两个是在转换url时候用来编码解码用的. 有编码就会有解码, 解码就是decodeU ...
- Entity Framework中实现查询的几种方法
在介绍几种方法前,献上一张图,希望图的作者不要追究我的盗图之过.本文的内容是我自学时的笔记,自学的内容来自网络.手打的代码,切不可直接复制过去用,会有好多错别字什么的. Entity SQL 类似于S ...
- (转)实例详解CSS中position的fixed属性使用
关于fixed属性,在什么情况下需要用,怎么用,首先,我们应该先了解下fixed属性的说明:fixed总是以body为定位时的对象,总是根据浏览器的窗口来进行元素的定位,通过"left&qu ...
- ActiveMQ发布订阅模式(转)
ActiveMQ的另一种模式就SUB/HUB即发布订阅模式,是SUB/hub就是一拖N的USB分线器的意思.意思就是一个来源分到N个出口.还是上节的例子,当一个订单产生后,后台N个系统需要联动,但有一 ...
- MFC串口通信
1.串口的操作可以有两种操作方式:同步操作方式和重叠操作方式(又称为异步操作方式). 同步操作时,API函数会阻塞直到操作完成以后才能返回(在多线程方式中,虽然不会阻塞主线程,但是仍然会阻塞监听线程) ...
- 不用不知道 apply()与call()的强大
在看关于javascript继承的时候 好多地方都用到了apply()和call() 之前在简单编程的时候根本没有遇到过 查阅资料后才发现这两个方法是如此的好用. 下面从几方面来看一下这两个方法: 1 ...