私は、2つの列を組み合わせ(テキスト)、フラグ(数値)として持つテーブルを持っています。私は、選択クエリでwhere句を使用して組み合わせ値に応じてフラグの値を取得しようとしています。データベースから特定のデータをフェッチするのが難しい
問題は、組み合わせ値が1から始まっている場合です。ここでは、組み合わせ= '1001'の場合、テーブルからのフラグの正しい値を取り出すが、0から始まっているときなどである。組み合わせ= '0010'の場合、データベースからは何も検索されません。私はコードをデバッグしましたが、この理由はありません。以下はデータベースイメージです。
-(void)fetchfromDatabase
{
sqlite3 *database;
NSString *strPath = [[NSBundle mainBundle]pathForResource:@"ken" ofType:@"db"];
NSLog(@"DBPath : %@",strPath);
const char *dbPath = [strPath UTF8String];
if(sqlite3_open(dbPath, &database)==SQLITE_OK)
{
NSLog(@"Database is Ok");
// const char *cConcate = [concate UTF8String];
NSString *query = [NSString stringWithFormat:@"select * from kentable where combination =%@",concate];
NSLog(@"final concate in database:%@",concate);
NSLog(@"Query:%@",query);
const char *sqlQuery =[query cStringUsingEncoding:NSASCIIStringEncoding];
NSLog(@"char query %s", sqlQuery);
sqlite3_stmt *queryStatement;
if(sqlite3_prepare_v2(database, sqlQuery,-1,&queryStatement, NULL)==SQLITE_OK)
{
NSLog(@"Conversion is Ok");
while (sqlite3_step(queryStatement)==SQLITE_ROW)
{
NSLog(@"in While Statement of row");
int flag=sqlite3_column_int(queryStatement, 1);
NSLog(@"question 5:%d",flag);
}
sqlite3_reset(queryStatement);
}
else
{
NSLog(@"ERROR");
}
sqlite3_close(database);
}
}
私はあなたのクエリに引用符を追加したいと思うかもしれないと思います。私はCoreDataでsqliteを使用する方が好きです。 – govi
コアデータを使用してください!方法は速く、管理するコードが少なくて済みます。あなたは選択文を書かないでしょう。 –
@goviあなたは正しいです。たくさんありがとうございます。それは正常に働いた。 –