mysql 的预编译功能,是为了那些频繁执行的语法不变的 sql 语句而准备的,每次 sql 语句执行都要经过数据库的编译,这个过程比较耗时,一条两条或十几条可能没什么感觉,如果是上千条效率会明显的有变化。mysql 提供的机制是可以让一个结构不变的 sql 语句预先在数据库中编译,我们只需要将可变的参数每次传递给它执行就可以了,这样就省去了编译的步骤,效率提高非常明显。下面就是预编译的一个小例子。继续阅读

使用 c语言连接处理 oracle 数据库的时候,是使用的 oracle 提供的 proc 方案,而 mysql 则提供了一系列函数,我们需要包含 mysql 的头文件  mysql.h 和连接 mysql 的一些库才能正确的使用他的 api。下面的示例包含了连接、查询、使用游标获取数据、获取结果集列头、错误处理等方法,请参考代码和注释。

继续阅读

使用 select 语句获取数据,有两种种结果,第一种,得到的结果只有一行,我们只需要用指定的变量来接收它就可以了,但第二种情况则是有多行数据,每一行数据,处理这种多行返回的数据也有两种方法,一个是使用一个二维宿主数组来接收这些结果(如果不知道结果有多少,宿主数组也不知道该定义多大,所以这种方法不太灵活),另外一个是使用游标的方式来遍历数据,游标又分单向的遍历游标和滚动游标。本文就介绍这些所有的方法。

继续阅读

在连接数据库的过程中我们有的时候可能会遇到连接数据库出错、插入数据出错、sql语句写错等等情况,除了这些,我们还会在插入和读取数据时会遇到处理 null 值的问题,以下代码演示了如何对 sql 执行出错进行处理,并执行了一个 null 值插入的操作,中间引入了指示变量的概念,就是专门为了处理 null 值而存在的,注意在插入数据时,指示变量是紧随宿主变量的(:loc:loc_ind)。后面我们将介绍 select 查询出来的 null 值该如何处理。

继续阅读

视图是一个抽象的概念,简单的说就是把表中的部分我们关注的内容保存一份出来到视图中,这样我们每次就不需要通过那么多字段的表去查询数据,只需要通过已经过滤出来的我们关系的数据中(视图中)取我们需要的数据。进一步说就是从一张大的表数据中抽离出来一部分我们关注的数据,这部分数据就是可以存放在视图中。向视图提供数据内容的语句为 SELECT 语句, 可以将视图理解为存储起来的 SELECT 语句。

继续阅读

sql 语句看大一点就是一本语言,他的操作对象是数据库,只有个别的数据库在 sql 的语法或数据库内置的函数上会有一些区别,但大体上 sql 的语法都是一样的,无论 oracle、mysql、mssqlserver、sqlite 等。除了语法上,有一些概念他们都是一样的,那就是操作数据库时 sql 的语句类型。

继续阅读