菜鸟教程小白 发表于 2022-12-12 12:33:54

ios - SQLite 数据库始终为空 (FMDB)


                                            <p><p>我正在做一个非常经典的例程,我已经做过很多次了,但是在这个项目中,它不起作用。当我想使用我的数据库时,我得到“没有这样的表”错误。这应该是错的。我检查了捆绑数据库及其罚款;我检查了手机中的“结果”数据库,它完全是空的(没有结构,显然也没有数据)。</p>

<p>这是我的数据库创建例程。我每次需要数据库时都会调用它。</p>

<pre><code>+ (FMDatabase*)createAndCheckDataBase{
    BOOL success;
    NSArray *docPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDir = ;
    NSString *databasePath = ;
    NSFileManager *fileManager = ;
    success = ;

    //The database already exist in the application folder, we don&#39;t need to create it
    if(success){
      return ;
    }

    NSString *databasePathFromApp = [[ resourcePath] stringByAppendingPathComponent:@&#34;database.sqlite&#34;];
    ;

    return ;
</code></pre>

<p>然后我只做 <code>FMDatabase *db = ;</code>我应该得到我的数据库。但我没有。</p>

<p>我使用 Firefox 的 SQLite Manager 插件创建了 sqlite 数据库,在那里创建了结构,然后将其导入到包中。</p>

<p>注意:成功总是返回 true。</p>

<p>欢迎任何帮助!</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>正如评论所述,您需要检查副本。</p>

<p>这是我的代码片段,它检查复制是否成功并将错误详细信息返回给消费者</p>

<pre><code>//
// notice our method to prepare the db returns bool and doesn&#39;t lose the error details
// the consumer can log, present, whatever - this is a library function
//
- (BOOL)ensureDatabasePrepared: (NSError **)error
{
    // &lt;snip bunch of code&gt;

    // copy db from template to library
    if (![ fileExistsAtPath:_dbPath])
    {
      NSLog(@&#34;db not exists&#34;);

      // notice how we pass in the error ref passed to this function
      if (![ copyItemAtPath:dbTemplatePath toPath:_dbPath error:error])
      {
            return NO;
      }

      NSLog(@&#34;copied&#34;);
    }
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - SQLite 数据库始终为空 (FMDB),我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/26778172/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/26778172/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - SQLite 数据库始终为空 (FMDB)