Palm OS的所有内容在其存储器中都表现为数据库形式,下面我们就开始学习创建和使用数据库。我们将继续编写Contacts程序,把它写入一个数据库。
删除工作
为准备向Contacts添加一个数据库,首先应删除以前的示范语句。
备份Contacts程序
首先应备份当前的Contacts程序。我将它命名为Contacts CH.4。
步骤如下:
1. 运行Windows浏览器;
2. 找到并选中Contacts工程文件夹;
3. 按下CTRL-C复制文件夹;
4. 单击你想备份到的文件夹;
5. 按下CTRL-V将Contacts工程文件夹粘贴;
6. 单击Contacts的名字,将其改名为Contact CH.4。
从资源文件将原来的资源删除
把我们不再用到的一些资源从工程中删除。步骤如下:
1. 打开资源构造器;
2. 打开Contacts工程src文件夹中的Contacts.rsrc文件;
3. 选中FieldInit字符串资源,按Delect删除;
4. 关闭并保存Contacts.rsrc。
删除代码
在删掉资源后,我们要删除和重新组织代码使程序正常运行。
步骤如下:
1. 运行Code Warrior集成开发环境;
2. 从Contacts工程文件夹打开Contacts.mcp;
3. 从PilotMain()的刚开始处中删除下列代码:
// CH.3 Our field memory handle
static Handle htext; // CH.3 Handle to the text in our edit field
#define HTEXT_SIZE 81 // CH.3 Size of our edit field
4. 从PilotMain()接近顶部的地方删除下列代码:
// CH.3 Get the initialization string resource handle
hsrc = DmGetResource( strRsc, FieldInitString );
// CH.3 Lock the resource, get the pointer
psrc = MemHandleLock( hsrc );
// CH.3 Allocate our field chunk
htext = MemHandleNew( HTEXT_SIZE );
if( htext == NULL )
return( 0 );
// CH.3 Lock the memory, get the pointer
ptext = MemHandleLock( htext );
// CH.3 Initialize it
StrCopy( ptext, psrc );
// CH.3 Unlock the field's memory
MemHandleUnlock( htext );
// CH.3 Unlock the resource's memory
MemHandleUnlock( hsrc );
// CH.3 Release the string resource
DmReleaseResource( hsrc );
5. 从contactDetailEventHandler()中将frmOPenEvent事件处理部分删掉下列代码:
// CH.3 Get the index of our field
index = FrmGetObjectIndex( form, ContactDetailFirstNameField );
// CH.3 Get the pointer to our field
field = FrmGetObjectPtr( form, index );
// CH.3 Set the editable text
FldSetTextHandle( field, htext );
// CH.2 Draw the form
FrmDrawForm( form );
// CH.3 Set the focus to our field
FrmSetFocus( form, index );
6. 从contactDetailEventHandler()中删除frmCloseEvent;
7. 从PilotMain()删除MemHandleFree()的函数调用。
添加数据库
现在开始添加一个数据库。首先,利用资源构造器向Contact Detail窗体添加一些按钮用来浏览数据库记录;再添加一个帮助信息和新的警告;然后添加可创建和修改数据库的程序代码。
数据库技术和术语
数据库有很多种类型。也就存在与它们相关联的容易混淆的术语。我将在这一部分探讨一下基本术语并解释我们将要接触的其它术语。
数据库中最基本的单元叫记录,有的地方也叫“行”(raw)。一个记录通常有一些数据组成:例如,一个人的姓名、地址和电话号码等。每个数据可叫字段,也被称为“表元”或“列”。通常“列”是指在所有记录中提供相似信息的数据,例如:数据库中所有的“姓”。
你可以把数据库看成是由行和列组成的信息表。每一行代表一个单独的条目。每一行代表和所有条目相关联的一种特殊类型的数据集合。例如:你可以用数据库的每一行代表一个人。在这种情况下,列可能为所有人的姓和名。如果行代表约会,那么列可代表约会时间、约会时间等。
一般情况下,你一次只能查看数据库的一条记录。正在被你查看的行一般叫“游标”(cursor)。Palm OS称之为“索引”(index)。在数据库中一行行的移动被叫做“浏览”(navigation)。
数据库一般分为平面(flat-file)数据库和关系数据库两种。平面数据库是由一个单独的表组成。Palm OS就使用这种简单的数据库类型。关系数据库是由许多不同的表组成,并且它们之间可通过不同的方式相联系。现在绝大部分的数据库为关系数据库。在一些Palm OS程序中,你可以通过建立一些平面数据库,让它们像关系数据库一样的工作。
数据库可根据你提供的限制查询语句为你提供它的一个子集。这就像你问数据库一个问题然后数据库给你想要的答案一样。这种方式在数据库中叫做“查询”(query)。通过查询得到的行叫结果集(result set)或答案集(solution set)。
Palm OS中的数据库要比一般的平面数据库要灵活的多,因为它的记录就是内存中的存储块。你可根据自己的需要任意解释它们。结果,你就有了这样一个数据库:它里面的记录有着不同的格式和长度。
Contacts.rsrc文件内容的添加
现在我们就通过编制程序来看看数据库如何工作。首先,为Contact Detail窗体创建添加(add)和删除(delete)记录以及浏览(navigate)数据库的按钮:
1. 打开资源构造器;
2. 打开Contacts工程中src文件夹中的Contacts.rsrc文件;
3. 选中Contact Detail窗体双击打开;
4. 选中Window | Catalog生成Catalog窗口;
5. 拖动三个标签到Contact Detail窗体上。根据下表设置它们的属性:
Left Origin Top Origin Text
20 15 First Name
21 30 Last Name
2 45 Phone Number
注意:我产生Left Origin Numbers的方法是:首先按下shift同时单击左键,然后从构造器的菜单上再选择Arrange | Align Right Edge。
6.拖动至少两个以上的输入框到Contact Detail窗体上。根据下表设置它们的属性:
Object Identifier LeftOrigin TopOrigin Width MaxCharacters Auto Shift
FirstName 80 15 79 15 Yes
LastName 80 30 79 15 Yes
PhoneNumer 80 45 79 15 Yes
7.拖动六个按钮到Contact Detail窗体上。根据下表设置它们的属性:
ObjectIdentifier LeftOrigin TopOrigin Width MaxCharacters
First 1 130 28 First
Prev 45 130 28 Prev
Next 88 130 28 Next
Last 131 130 28 Last
Delete 103 146 36 Delete
New 53 146 36 New
删除工作
为准备向Contacts添加一个数据库,首先应删除以前的示范语句。
备份Contacts程序
首先应备份当前的Contacts程序。我将它命名为Contacts CH.4。
步骤如下:
1. 运行Windows浏览器;
2. 找到并选中Contacts工程文件夹;
3. 按下CTRL-C复制文件夹;
4. 单击你想备份到的文件夹;
5. 按下CTRL-V将Contacts工程文件夹粘贴;
6. 单击Contacts的名字,将其改名为Contact CH.4。
从资源文件将原来的资源删除
把我们不再用到的一些资源从工程中删除。步骤如下:
1. 打开资源构造器;
2. 打开Contacts工程src文件夹中的Contacts.rsrc文件;
3. 选中FieldInit字符串资源,按Delect删除;
4. 关闭并保存Contacts.rsrc。
删除代码
在删掉资源后,我们要删除和重新组织代码使程序正常运行。
步骤如下:
1. 运行Code Warrior集成开发环境;
2. 从Contacts工程文件夹打开Contacts.mcp;
3. 从PilotMain()的刚开始处中删除下列代码:
// CH.3 Our field memory handle
static Handle htext; // CH.3 Handle to the text in our edit field
#define HTEXT_SIZE 81 // CH.3 Size of our edit field
4. 从PilotMain()接近顶部的地方删除下列代码:
// CH.3 Get the initialization string resource handle
hsrc = DmGetResource( strRsc, FieldInitString );
// CH.3 Lock the resource, get the pointer
psrc = MemHandleLock( hsrc );
// CH.3 Allocate our field chunk
htext = MemHandleNew( HTEXT_SIZE );
if( htext == NULL )
return( 0 );
// CH.3 Lock the memory, get the pointer
ptext = MemHandleLock( htext );
// CH.3 Initialize it
StrCopy( ptext, psrc );
// CH.3 Unlock the field's memory
MemHandleUnlock( htext );
// CH.3 Unlock the resource's memory
MemHandleUnlock( hsrc );
// CH.3 Release the string resource
DmReleaseResource( hsrc );
5. 从contactDetailEventHandler()中将frmOPenEvent事件处理部分删掉下列代码:
// CH.3 Get the index of our field
index = FrmGetObjectIndex( form, ContactDetailFirstNameField );
// CH.3 Get the pointer to our field
field = FrmGetObjectPtr( form, index );
// CH.3 Set the editable text
FldSetTextHandle( field, htext );
// CH.2 Draw the form
FrmDrawForm( form );
// CH.3 Set the focus to our field
FrmSetFocus( form, index );
6. 从contactDetailEventHandler()中删除frmCloseEvent;
7. 从PilotMain()删除MemHandleFree()的函数调用。
添加数据库
现在开始添加一个数据库。首先,利用资源构造器向Contact Detail窗体添加一些按钮用来浏览数据库记录;再添加一个帮助信息和新的警告;然后添加可创建和修改数据库的程序代码。
数据库技术和术语
数据库有很多种类型。也就存在与它们相关联的容易混淆的术语。我将在这一部分探讨一下基本术语并解释我们将要接触的其它术语。
数据库中最基本的单元叫记录,有的地方也叫“行”(raw)。一个记录通常有一些数据组成:例如,一个人的姓名、地址和电话号码等。每个数据可叫字段,也被称为“表元”或“列”。通常“列”是指在所有记录中提供相似信息的数据,例如:数据库中所有的“姓”。
你可以把数据库看成是由行和列组成的信息表。每一行代表一个单独的条目。每一行代表和所有条目相关联的一种特殊类型的数据集合。例如:你可以用数据库的每一行代表一个人。在这种情况下,列可能为所有人的姓和名。如果行代表约会,那么列可代表约会时间、约会时间等。
一般情况下,你一次只能查看数据库的一条记录。正在被你查看的行一般叫“游标”(cursor)。Palm OS称之为“索引”(index)。在数据库中一行行的移动被叫做“浏览”(navigation)。
数据库一般分为平面(flat-file)数据库和关系数据库两种。平面数据库是由一个单独的表组成。Palm OS就使用这种简单的数据库类型。关系数据库是由许多不同的表组成,并且它们之间可通过不同的方式相联系。现在绝大部分的数据库为关系数据库。在一些Palm OS程序中,你可以通过建立一些平面数据库,让它们像关系数据库一样的工作。
数据库可根据你提供的限制查询语句为你提供它的一个子集。这就像你问数据库一个问题然后数据库给你想要的答案一样。这种方式在数据库中叫做“查询”(query)。通过查询得到的行叫结果集(result set)或答案集(solution set)。
Palm OS中的数据库要比一般的平面数据库要灵活的多,因为它的记录就是内存中的存储块。你可根据自己的需要任意解释它们。结果,你就有了这样一个数据库:它里面的记录有着不同的格式和长度。
Contacts.rsrc文件内容的添加
现在我们就通过编制程序来看看数据库如何工作。首先,为Contact Detail窗体创建添加(add)和删除(delete)记录以及浏览(navigate)数据库的按钮:
1. 打开资源构造器;
2. 打开Contacts工程中src文件夹中的Contacts.rsrc文件;
3. 选中Contact Detail窗体双击打开;
4. 选中Window | Catalog生成Catalog窗口;
5. 拖动三个标签到Contact Detail窗体上。根据下表设置它们的属性:
Left Origin Top Origin Text
20 15 First Name
21 30 Last Name
2 45 Phone Number
注意:我产生Left Origin Numbers的方法是:首先按下shift同时单击左键,然后从构造器的菜单上再选择Arrange | Align Right Edge。
6.拖动至少两个以上的输入框到Contact Detail窗体上。根据下表设置它们的属性:
Object Identifier LeftOrigin TopOrigin Width MaxCharacters Auto Shift
FirstName 80 15 79 15 Yes
LastName 80 30 79 15 Yes
PhoneNumer 80 45 79 15 Yes
7.拖动六个按钮到Contact Detail窗体上。根据下表设置它们的属性:
ObjectIdentifier LeftOrigin TopOrigin Width MaxCharacters
First 1 130 28 First
Prev 45 130 28 Prev
Next 88 130 28 Next
Last 131 130 28 Last
Delete 103 146 36 Delete
New 53 146 36 New
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10294527/viewspace-126908/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/10294527/viewspace-126908/