UltraLite 每次向应用程序提供表中的一行。ULTable 对象有一个当前位置,它可能在表中的某一行上、第一行前面或最后一行后面。
当您的应用程序改变位置时,UltraLite 会在缓冲区中制作一个该行的副本。获取或设置值的任何操作都只影响该缓冲区中的数据副本,而不会影响数据库中的数据。
以下语句将缓冲区中第一列的值更改为 3。
tCustomer.setInt( 1 , 3 ); |
UltraLite 模式确定缓冲区中的值将用于何种用途。除缺省模式外,UltraLite 还具有以下四种操作模式。
插入模式 当调用 ULTable.insert 方法时,缓冲区中的数据将作为新行添加到表中。
更新模式 当调用 ULTable.update 方法时,缓冲区中的数据将替换当前行。
查找模式 在调用某一种 ULTable.find 方法时,用于定位其值与缓冲区中的数据完全匹配的行。
查寻模式 在调用某一种 ULTable.lookup 方法时,用于定位其值匹配或大于缓冲区中的数据的行。
移动到想要更新的行。
您可以通过滚动浏览表来移动到某一行,也可以使用 Find 方法和 Lookup 方法通过搜索来移动到该行。
进入更新模式。
例如,以下指令进入表 tCustomer 的更新模式。
tCustomer.updateBegin(); |
为要更新的行设置新值。
例如,以下指令将新值设置为 Elizabeth。
tCustomer.setString( 2, "Elizabeth" ); |
执行更新。
tCustomer.update(); |
完成更新操作后,当前行就是刚才更新过的行。如果您更改了在打开 ULTable 对象时指定的索引中的列的值,则当前位置不确定。
缺省情况下,UltraLite 在 autoCommit 模式中运行,所以更新会被立即应用于永久存储中的行。如果已经禁用了 autoCommit 模式,那么只有在执行提交操作后才会应用更新。有关 autoCommit 模式的详细信息,请参见管理事务。
不要更新行的主键:而是删除该行并添加新行。
插入行的步骤与更新行的步骤类似,区别在于不需要在执行插入操作前定位到表中的任何特定行。行会按打开表时指定的索引自动排序。
进入插入模式。
例如,以下指令进入表 CustomerTable 的插入模式。
tCustomer.insertBegin(); |
设置新行的值。
如果没有设置其中一列的值,并且该列有缺省值,则使用该缺省值。如果该列没有缺省值,则使用 NULL。如果该列不允许 NULL 值,则使用以下缺省值:
对于数字列,添加零。
对于字符列,添加空字符串。
若要显式设置值为 NULL,请使用 setNull 方法。
colID = tCustomer.schema.getColumnID( "id" ); colFirstName = tCustomer.schema.getColumnID( "fname" ); colLastName = tCustomer.schema.getColumnID( "lname" ); tCustomer.setInt( colID, 42 ); tCustomer.setString( colFirstName, "Mitch" ); tCustomer.setString( colLastName, "McLeod" ); |
执行该插入。
执行 Commit 后,插入的行就会永久保存到数据库中。在 autoCommit 模式中,执行 Insert 方法本身就包含了 Commit 操作。
tCustomer.insert(); |
没有与插入或更新模式对应的删除模式。
以下过程删除一行。
移到想要删除的行。
执行删除:
tCustomer.deleteRow(); |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |