所谓模态对话框就是该对话框被创建后,其父窗口不能响应任何消息,无法操作,只有在关闭了新创建出来的窗口后才能继续操作其后面的父窗口。而非模态对话框则不会有这种情况,非模态对话框创建完成后不影响父窗口的操作,两个窗口可以同时响应消息。
mfc 中利用设备描述表(dc)绘制图案
DC(Device Context)在程序中,可以形象的理解为就是一块画布,在画画之前,你要选择好画笔,给画笔蘸上颜色,决定要写字还是画画等等,这些形象的比喻在 mfc 中都有对应的类去实现,大家可以参考下面两篇文章,本文只记录一些特殊的方法,方便以后翻阅查询:
mysql 预编译 sql 实现代码
mysql 的预编译功能,是为了那些频繁执行的语法不变的 sql 语句而准备的,每次 sql 语句执行都要经过数据库的编译,这个过程比较耗时,一条两条或十几条可能没什么感觉,如果是上千条效率会明显的有变化。mysql 提供的机制是可以让一个结构不变的 sql 语句预先在数据库中编译,我们只需要将可变的参数每次传递给它执行就可以了,这样就省去了编译的步骤,效率提高非常明显。下面就是预编译的一个小例子。
实现一个简单的 mysql 工具
无论在 windows 下还是 linux 下,我们每次去连接 mysql 的时候都会运行一个叫做 mysql 的命令,本文就模仿制作一个类似的程序,实现可以在里面执行 DML 和 DQL 语句。具体代码的实现请参考程序。
c语言 linux 下连接 mysql 增删改查
使用 c语言连接处理 oracle 数据库的时候,是使用的 oracle 提供的 proc 方案,而 mysql 则提供了一系列函数,我们需要包含 mysql 的头文件 mysql.h 和连接 mysql 的一些库才能正确的使用他的 api。下面的示例包含了连接、查询、使用游标获取数据、获取结果集列头、错误处理等方法,请参考代码和注释。
mysql 较 oracle 查询语句的不同
mysql 与 oracle 的查询语法有一部分不太相同,特别是在多表查询时,mysql 无法适应 oracle 的做外连接和右外连接的查询语法,自己有另外一套查询语法,与 ms sql server 相似。所以这里列举一下,方便以后查询和使用。
proc 编程处理 select 获取的数据集
使用 select 语句获取数据,有两种种结果,第一种,得到的结果只有一行,我们只需要用指定的变量来接收它就可以了,但第二种情况则是有多行数据,每一行数据,处理这种多行返回的数据也有两种方法,一个是使用一个二维宿主数组来接收这些结果(如果不知道结果有多少,宿主数组也不知道该定义多大,所以这种方法不太灵活),另外一个是使用游标的方式来遍历数据,游标又分单向的遍历游标和滚动游标。本文就介绍这些所有的方法。
proc 编程错误处理机制及null处理
在连接数据库的过程中我们有的时候可能会遇到连接数据库出错、插入数据出错、sql语句写错等等情况,除了这些,我们还会在插入和读取数据时会遇到处理 null 值的问题,以下代码演示了如何对 sql 执行出错进行处理,并执行了一个 null 值插入的操作,中间引入了指示变量的概念,就是专门为了处理 null 值而存在的,注意在插入数据时,指示变量是紧随宿主变量的(:loc:loc_ind)。后面我们将介绍 select 查询出来的 null 值该如何处理。
proc 编程执行 insert、delete、update语句
主题中提到的三种语句都是没有返回值的,所以我们实现起来也最简单,下面代码中包含了 insert、update 和 delete 三种语法的使用。值得注意的是在 insert 和 update 的时候使用宿主变量时的语法,在宿主变量前一定要加冒号,这是初学者最容易犯的错误。
oracle proc 编程基础及最小化案例
oracle proc 编程是在我的概念中是非常陌生的,学习了一天下来发现这东西真的好古老,但是依然健壮、稳定,其中间是编辑一个 .pc 的文件使用 proc 进行预处理,预处理后生成一个真正的.c文件,此时再由 gcc 去编译成一个可执行文件运行。因为 proc 涉及到的知识较多,我无法整理到几篇博文中就概述这些所涉及的知识,所以只能总结代码做好注释防止以后自己需要时忘记。如果有想进一步了解 proc 编程的,可以买名为“Oracle9I ProC C++编程指南”。包括 oracle 的环境搭建也并不是我们讨论的重点,如果有精力的话,我会给大家编写类似的教程。
oracle 索引
索引的概念不仅仅在 oracle 中存在,很多大型数据库软件都有索引的功能,其主要目的是为某张表的某个经常作为过滤条件的字段创建一个快速的索引区,当用户在查询过程中使用了这个过滤条件(比如 where id = 10)那么数据库会自动去索引区查找这个字段的索引,然后通过索引的指向快速找到需要查找的数据,可以抽象的理解它像我们C语言学习的指针一样。
oracle 视图
视图是一个抽象的概念,简单的说就是把表中的部分我们关注的内容保存一份出来到视图中,这样我们每次就不需要通过那么多字段的表去查询数据,只需要通过已经过滤出来的我们关系的数据中(视图中)取我们需要的数据。进一步说就是从一张大的表数据中抽离出来一部分我们关注的数据,这部分数据就是可以存放在视图中。向视图提供数据内容的语句为 SELECT 语句, 可以将视图理解为存储起来的 SELECT 语句。
oracle 表操作
本文记录 oracle 环境下对表的创建、字段处理(增、删、改、重命名)、删除、重命名操作,其中包含了在创建表时常用的约束条件及数据类型。
oracle 事务
事务,乍一看这个词不知其所以然,至少我第一次看到不知道他是干什么用的。要理解它并不难,你可以认为它就是我们在操作数据库时中间的一个通道,这个通道另一端就是数据库,从我们开始执行一个 DML 语句(参考:http://www.mycode.net.cn/database/823.html )开始,就相当于我们在向通道中塞数据或从通道中读取数据,但是要注意,这些数据不会立即到通道的另一端数据库内。只有我们执行了 commit 或者 执行了一条 DDL 语句时,系统会将我们之前执行的所有 DML 语句真正的应用到通道的另一端数据库中。那这个通道存在的价值是什么呢?那就只支持事务的回滚,意思就是如果我们对数据库做了一些错误的 DML 操作,那么可以通过回滚事务的方式回到执行了错误的 DML 语句之前,这就是事务的简单理解。
sql 语言的几种操作类型
sql 语句看大一点就是一本语言,他的操作对象是数据库,只有个别的数据库在 sql 的语法或数据库内置的函数上会有一些区别,但大体上 sql 的语法都是一样的,无论 oracle、mysql、mssqlserver、sqlite 等。除了语法上,有一些概念他们都是一样的,那就是操作数据库时 sql 的语句类型。