【问题标题】:Accessing an object through SQLIte database通过 SQLite 数据库访问对象
【发布时间】:2011-09-18 19:49:34
【问题描述】:

我将一个对象传递给我正在执行查询的方法。我的方法是:

-(BOOL)searchWordInDatabase:(NSString *)string
{
NSArray *paths=NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory= [paths objectAtIndex:0];
NSString *path=[documentsDirectory stringByAppendingPathComponent:@"SymbolTalkLanguageElement.sqlite"];

//Open the database
//might have to make database as property
if(sqlite3_open([path UTF8String], &dataBase) ==SQLITE_OK)
{
    const char *sql="select ImageName from tblLanguageElement where Category= string";
    sqlite3_stmt *statement;

    if(sqlite3_prepare(dataBase, sql, -1, &statement, NULL) == SQLITE_OK)
    {
        while (sqlite3_step(statement) == SQLITE_ROW) 
        {
            NSLog(@"%@",[NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 0)]);
            //[list addObject:[NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 0)]];
            return YES;
        }

    }



}
return NO;

}

但我没有得到查询中字符串的值。我该怎么做?

【问题讨论】:

    标签: iphone objective-c ios ipad sqlite


    【解决方案1】:

    您的查询有误。您不能替换这样的字符串。请按以下方式进行。

    NSString *sqlStr = [NSString stringWithFormat:@"select ImageName from tblLanguageElement where Category = '%@'", string];
    char *sql = (char *)[sqlStr UTF8String];
    

    【讨论】:

      【解决方案2】:

      确保您的数据库存在于您检索的路径中。您可以在执行语句时按如下方式绑定字符串变量。

       const char *sql = "select ImageName from tblLanguageElement where Category = ?";
       sqlite3_stmt *statement;
       if(sqlite3_prepare(dataBase, sql, -1, &statement, NULL) == SQLITE_OK)
       {
            sqlite3_bind_text(statement, 1, [string UTF8String], -1, SQLITE_TRANSIENT);
      
            while (sqlite3_step(statement) == SQLITE_ROW) 
            {
                 NSLog(@"%@",[NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 0)]);
                 //[list addObject:[NSString stringWithUTF8String:(char *)sqlite3_column_text(statement, 0)]];
              return YES;
            }
       }
      

      【讨论】:

        猜你喜欢
        • 2015-03-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-06
        相关资源
        最近更新 更多