你好。
我已经在我的应用中实现了 FMDB。我试图用这个从我的一个数据库中获取最后一行 id
FMDatabase *bdb=[FMDatabase databaseWithPath:databasePath];
NSString *str;
if([bdb open]){
int lastId=[bdb lastInsertRowId];
FMResultSet *s = [bdb executeQuery:[NSString stringWithFormat:@"SELECT budget FROM data WHERE ROWID='%d'",lastId]];
if([s next])
{
str= [s stringForColumnIndex:0];
}
}
我遇到的问题是 lastId 始终为 0 ,尽管当前数据库中有 3 个条目。 有人知道为什么会这样吗?
编辑:数据库是这样创建的:
NSFileManager *filemgr = [NSFileManager defaultManager];
if ([filemgr fileExistsAtPath: databasePath ] == NO)
{
const char *dbpath = [databasePath UTF8String];
if (sqlite3_open(dbpath, &basicDB) == SQLITE_OK)
{
char *errMsg;
const char *sql_stmt = "CREATE TABLE IF NOT EXISTS DATA (ROWID INTEGER PRIMARY KEY AUTOINCREMENT, NAME TEXT, BUDGET INTEGER)";
if (sqlite3_exec(basicDB, sql_stmt, NULL, NULL, &errMsg) != SQLITE_OK)
{
DLog(@"Failed to create table");
}
sqlite3_close(basicDB);
} else {
DLog(@"Failed to open/create database");
}
}
最佳答案
lastInsertRowId 适用于特定连接。
您正在使用的连接刚刚打开,因此没有插入的行 ID。
(lastInsertRowId 的目的是让您的应用知道刚刚被INSERT编辑的记录的 ID。)
要从最后一条记录中读取数据,请使用如下内容:
SELECT budget FROM data WHERE rowid = (SELECT max(rowid) FROM data)
关于iphone - FMDB lastinsertRowID 始终为 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12976670/
在Ruby中,我的理解是self是任何裸方法调用的隐含接收者。然而:~:irb>>puts"foo"foo=>nil>>self.puts"foo"NoMethodError:privatemethod`puts'calledformain:Object这是什么原因?如果有任何帮助:>>method(:puts).owner=>Kernel 最佳答案 私有(private)方法不能有接收者我认为答案是这样的:Ruby强制方法隐私的方式是它不允许使用显式接收者调用私有(private)方法。一个例子:classBakerdefbake
我正在开发一个应用程序有1个具有多对多关系的模块,它工作正常,我可以用嵌套形式创建我的“单元”,但是当我处于编辑状态时我遇到了1个问题,当我点击提交按钮时它抛出了一个错误。Noroutematches[POST]"/units/27"ithoughttheactionshouldbepatchinsteadofpost??iinspectthegeneratedhtmlinbrowsers,andicanseethereisahiddenfieldnamed"_method"with"patch"value.我用脚手架生成了这个模块单位模型classUnit:unitrentperio
我正在构建一个与RubyonRails后端对话的iPhone应用程序。RubyonRails应用程序还将为Web用户提供服务。restful_authentication插件是提供快速和可定制的用户身份验证的绝佳方式。但是,我希望iPhone应用程序的用户在新列中存储一个由手机的唯一标识符([[UIDevicedevice]uniqueIdentifier])自动创建的帐户。稍后,当用户准备好创建用户名/密码时,帐户将更新为包含用户名和密码,iPhone唯一标识符保持不变。用户在设置用户名/密码之前不能访问该网站。然而,他们可以使用iPhone应用程序,因为该应用程序可以使用它的标识符
我有一个使用deviseonrails3的应用程序。我想启用http身份验证,以便我可以从iPhone应用程序向我的网络应用程序进行身份验证。如何从我的iPhone应用程序进行身份验证以进行设计?这安全吗?还是我应该进行不同的身份验证? 最佳答案 从设计的角度来看,您有3个选择:1)使用基本的http身份验证:您的iPhone应用程序有一个secretkey-这是在您的iPhone应用程序代码中烘焙的-用于对网络应用程序的每个请求进行身份验证。Google搜索:“设计基本的http身份验证”2)您可以通过在您的iPhone应用程序中
即,Ruby的Set是否等同于Java的LinkedHashSet? 最佳答案 在Ruby1.9中:是。在Ruby1.8中:可能不会。设置usesaHashinternally;由于哈希在1.9中是按插入顺序排列的,所以您可以开始了!作为muistooshort指出,这是一个实现细节,将来可能会改变(尽管不太可能)。值得庆幸的是,Set的当前实现是纯ruby,如果您愿意,将来可以将其改编成OrderedSet 关于ruby-Ruby中的Set是否始终保留插入顺序?,我们在StackO
如果Kaminari生成返回首页的链接,则它的URL生成会忽略页面参数。但是,如果省略page参数,则应用程序会选择随机页面。因此,Kaminari的默认行为会阻止以可靠的方式分页回到第一页。我已经解决了这个问题,稍后会在下面发布我的解决方案,但我想为后代发布这个问题,而且我也是Rails的新手,因此我不确定我的解决方案是最好的或最优雅的,我对改进和改进很感兴趣,如果只是为了我自己的自私教化! 最佳答案 Kaminari中实现我们想要改变的行为的代码行在lib/kaminari/helpers/tags.rb中。,在方法Kamina
我运行Cucumber和RSpec测试的rake任务总是使用我的开发环境。这里是相关的配置文件:RAILS_ROOT/config/environments/cucumber.rb#Editatyourownperil-it'srecommendedtoregeneratethisfile#inthefuturewhenyouupgradetoanewerversionofCucumber.#IMPORTANT:Settingconfig.cache_classestofalseisknownto#breakCucumber'suse_transactional_fixturesmet
是否可以在加载实体时始终预加载关联。例如classBookhas_many:chaptersendclassChaptersbelongs_to:bookendbook=Book.find_by_title('MobyDick')我知道您可以在调用中查找ie中的eagerload。book=Book.find_by_title('MobyDick',:include=>:chapters)但在这种情况下,我知道每当我找到一本书时,我总是希望急切加载章节而不需要记住:include=>参数。 最佳答案 您可以在模型中包含“defaul
这个问题在这里已经有了答案:关闭13年前。PossibleDuplicates:HowcanIdevelopforiPhoneusingaWindowsdevelopmentmachine?我想为我妻子的手机构建一个iPhone应用程序,但我对购买Mac作为一次性工作的开发平台不感兴趣。应用程序:应该在iPhone上独立运行(即没有网络连接)完全可以接受使用iPhoneJavascript库之一创建的GUI会做一些数据库IO来读取和更新数据没有商业值(value),永远不会被任何人使用这是我的想法:越狱iPhone在iPhone上安装Ruby+Sinatra使用Sinatra编写应用程
我正在试验iPhoneSDK并在Nic博士的rbiPhoneTest项目中做一些TDD。我想知道有多少人(如果有的话)成功地使用了这个或任何其他iPhone/Cocoa测试框架?更重要的是,我想知道如何最好地断言专有的二进制请求/响应协议(protocol)。这个想法是通过网络发送二进制请求并接收二进制响应。请求和响应是使用byteand'ing和or'ing创建的。我正在使用黄金副本模式来测试我的请求。这是我到目前为止所拥有的。不要笑,因为我是ObjectiveC和Ruby的新手:requireFile.dirname(__FILE__)+'/test_helper'require'