問題タブ [fmdb]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
objective-c - FMDB 結果セットが nil を返す
これが契約です。DBアプリにFMDB SQLite Wrapperを使用しています。Cord Data があることは知っていますが、私のデータベースは非常に巨大で、それを読み取るだけです。iOS アプリを介して新しいレコードが挿入/更新されることはありません。このアプリのある時点で、searchTerm と searchPosition に基づいてプレーヤーの名前と ID である DB からレコードを取得しようとしています。searchTerm は完全に正常に動作します。searchPosition クエリは sqlite3 では機能しますが、iOS アプリでは機能しません。どこが間違っているのかわかりません。手伝ってください。両方の方法のコードは次のとおりです。
以下は、プレー位置に基づいてプレーヤーを検索するために使用される IBAction です。
このメソッドは、ピッカービューで検索するために選択された再生位置を提供するだけです。
objective-c - iOS SQLite FMDB トランザクション..正しい使い方?
FMDB SQLite iOS ラッパーでトランザクションを使用してみます。
ドキュメントはトランザクションについて少し曖昧ですが、いくつかの関数をざっと見てから、次のロジックを思いつきました:
ios - FMDBに問題があり、searchStringから「executeQuery:」に値を挿入します
アプリの検索を作成しているときに、FMDB SQLite Wrapper(https://github.com/ccgus/fmdb)を使用しているときに問題が発生しました。
このSQLコマンドを使用してデータベースを検索すると、すべて問題ありません。13個のオブジェクトが返され、使用できます。
しかし、次のようにユーザー入力からsearchQueryを挿入しようとすると:
...値はSQLコマンドに挿入されません。そして、DBから返されたオブジェクトを取得しません。文字列(theSearchQuery)が最初の例で記述されたものと同じであっても。
さらに、便宜上、FMDBのドキュメントの一部を投稿します。:)
FMDBにSQLステートメントを提供するときは、挿入する前に値を「サニタイズ」しようとしないでください。代わりに、標準のSQLiteバインディング構文を使用する必要があります。
myTableの値に挿入(?、?、?)?文字は、挿入される値のプレースホルダーとしてSQLiteによって認識されます。実行メソッドはすべて、適切にエスケープされた可変数の引数(またはNSArrayやva_listなどのそれらの引数の表現)を受け入れます。
したがって、これ(またはこのようなもの)を行うべきではありません:
[db executeUpdate:[NSString stringWithFormat:@ "INSERT INTO myTable VALUES(%@)"、@ "this has \" lots of' bizarre \ "quotes'"]]; 代わりに、次のことを行う必要があります。
[db executeUpdate:@ "INSERT INTO myTable VALUES(?)"、@ "this has \" lots of'bizarre \ "quotes'"]; -executeUpdate:メソッド(またはva_listをパラメーターとして受け入れるバリアント)に提供されるすべての引数は、オブジェクトである必要があります。以下は機能しません(そしてクラッシュします):
[db executeUpdate:@ "INSERT INTO myTable VALUES(?)"、42]; 数値を挿入する適切な方法は、NSNumberオブジェクトに数値をボックス化することです。
[db executeUpdate:@ "INSERT INTO myTable VALUES(?)"、[NSNumber numberWithInt:42]]; または、-execute * WithFormat:バリアントを使用して、NSStringスタイルの置換を使用することもできます。
[db executeUpdateWithFormat:@ "INSERT INTO myTable VALUES(%d)"、42]; 内部的には、-execute * WithFormat:メソッドは適切にボックス化されています。次のパーセント修飾子が認識されます:%@、%c、%s、%d、%D、%i、%u、%U、%hi、%hu、%qi、%qu、%f、%g、% ld、%lu、%lld、および%llu。これら以外の修飾子を使用すると、予測できない結果になります。何らかの理由で、SQLステートメントに%文字を表示する必要がある場合は、%%を使用する必要があります。
iphone - NSDateを使用したFMDBクエリは実行されますが、有効になりません
NSDatesを含むFMDBを介して実行するクエリは実行されますが、結果セットを返したり、データベースを編集したりすることはありません。iOS 4.3シミュレーターで作業しています。日付を指定しないその他のクエリは、正しく実行されます。これが私が使用するコードの抜粋です:
スキーマは、time_stamped_tableにtime_stampを次のように記述します。
シミュレートされたアプリケーションコンテキストに保存されているデータベースを使用して、コマンドラインのsqlite3でこれらのクエリを実行すると、機能します。私が見逃しているFMDBを使用したNSDateによるクエリのための特別な準備はありますか?
cocoa - 共通の列に基づいて2つのFMResultSetをマージする方法は?
私は2つの別々のSQLitedbファイルを持っており、それらにアクセスするためにFMDBを使用しています(sqliteのcocoaラッパー)。
2つの結果を取得します。2つのFMResultSetにある各DBから1つです。
FMDBを使用して、結果の2つのセットの単一の共通列に基づいて2つのFMResultSetをマージおよびソートするにはどうすればよいですか?
sqlite - プロジェクトに外部ライブラリを追加するときの「AppleMach-O(id)リンカー」エラー
プロジェクトにFMDBを追加してから、フレームワークlibsqlite3.dylibとlibsqlite3.0.dylibを追加しましたが、それでもビルドエラーが発生します。プロジェクトからFMDBクラスを削除すると、正常にビルドされます。他に何を確認する必要がありますか?
エラーに関する詳細情報:
Ld /Users/gmi/Library/Developer/Xcode/DerivedData/iNROMockUp5-> gjmgpakyszrgwbbxnkdxehexacxm / Build / Products / Debug-> iphonesimulator / iNROMockUp5.app / iNROMockUp5 normal i386 cd /iOSDev/Testing/iNROMockUp5 Developer / Platforms / iPhoneSimulator.platform / Developer / usr / bin:/ Developer / usr / bin:/ usr / bi> n:/ bin:/ usr / sbin:/ sbin "/Developer/Platforms/iPhoneSimulator.platform/Developer/ usr / bin / llvm-gcc-4.2 -arch i386> -isysroot> /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.3.sdk-> L / Users / gmi / Library / Developer / Xcode / DerivedData / iNROMockUp5-> gjmgpakyszrgwbbxnkdxehexacxm / Build / Products / Debug-iphonesimulator-> F / Users / gmi / Library / Developer / Xcode / DerivedData / iNROMockUp5->gjmgpakyszrgwbbxnkdxehexacxm / Build / Products / Debug-iphonesimulator -filelist> / Users / gmi / Library / Developer / Xcode / DerivedData / iNROMockUp5-> gjmgpakyszrgwbbxnkdxehexacxm / Build / Intermediates / iNROMockUp5.build / /i386/iNROMockUp5.LinkFileList -mmacosx-> version-min = 10.6-Xlinker -objc_abi_version -Xlinker 2 -lsqlite3 -lsqlite3.0 -framework> MapKit -framework UIKit -framework Foundation -framework CoreGraphics -o> / Users / gmi / Library /Developer/Xcode/DerivedData/iNROMockUp5->gjmgpakyszrgwbbxnkdxehexacxm/Build/Products/Debug->iphonesimulator/iNROMockUp5.app/iNROMockUp5build / Objects-normal / i386 / iNROMockUp5.LinkFileList -mmacosx-> version-min = 10.6 -Xlinker -objc_abi_version -Xlinker 2 -lsqlite3 -lsqlite3.0 -framework> MapKit -framework UIKit -framework Foundation -framework CoreGraphics -o> / Users / gmi / Library / Developer / Xcode / DerivedData / iNROMockUp5-> gjmgpakyszrgwbbxnkdxehexacxm / Build / Products / Debug-> iphonesimulator / iNROMockUp5.app / iNROMockUp5build / Objects-normal / i386 / iNROMockUp5.LinkFileList -mmacosx-> version-min = 10.6 -Xlinker -objc_abi_version -Xlinker 2 -lsqlite3 -lsqlite3.0 -framework> MapKit -framework UIKit -framework Foundation -framework CoreGraphics -o> / Users / gmi / Library / Developer / Xcode / DerivedData / iNROMockUp5-> gjmgpakyszrgwbbxnkdxehexacxm / Build / Products / Debug-> iphonesimulator / iNROMockUp5.app / iNROMockUp5
ld:/Users/gmi/Library/Developer/Xcode/DerivedData/iNROMockUp5-> gjmgpakyszrgwbbxnkdxehexacxm / Build / Intermediates / iNROMockUp5.build / Debug-> iphonesimulator / iNROMockUp5.build / Objects-normal / i386/fmの重複シンボル_mainおよび>/Users/gmi/Library/Developer/Xcode/DerivedData/iNROMockUp5->gjmgpakyszrgwbbxnkdxehexacxm / Build / Intermediates / iNROMockUp5.build / Debug-> iphonesimulator / iNROMockUp5.build / Objects-normal / i386 / main.o for Architecture i386 collect :ldが1つの終了ステータスを返しましたコマンド/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/llvm-gcc-4.2が失敗しました>終了コード1
ld:/Users/gmi/Library/Developer/Xcode/DerivedData/iNROMockUp5-> gjmgpakyszrgwbbxnkdxehexacxm / Build / Intermediates / iNROMockUp5.build / Debug-> iphonesimulator / iNROMockUp5.build / Objects-normal / i386/fmの重複シンボル_mainおよび>/Users/gmi/Library/Developer/Xcode/DerivedData/iNROMockUp5->gjmgpakyszrgwbbxnkdxehexacxm / Build / Intermediates / iNROMockUp5.build / Debug-> iphonesimulator / iNROMockUp5.build / Objects-normal / i386 / main.o(アーキテクチャi386の場合)
コマンド/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/llvm-gcc-4.2が終了コード1で失敗しました
iphone - FMDB/Sqlite クエリの問題
2 つの列 category_id と question_id の両方が主キーである shuffledQuestions というテーブルを持つデータベースがあります。シャッフルされた質問の保存リストを保持する場所です。私の現在の問題は、question_id を取得できないことです。代わりに、rowid が返されるだけです。
categoryFromCategoryMenu は、それを別のものに変更することを意味するグローバル文字列ですが、今のところ、シーン間でオブジェクトを渡すときに実行します。再生中の場合に備えて、categoryFromCategoryMenu 変数を @"Action" に変更してみましたが、それでも行 ID を取得するだけです。
question_id 列の内容を取得できる唯一の方法は、sqlite クエリから category_id を削除することです。しかし、そこに複数のカテゴリがある場合、それは問題を引き起こします。すべての question_id を選択したくありません。特定のカテゴリの question_id だけです。
iphone - SQLite の変更が保存されない
iPhone の iOS 4 で SQLite を使用していますが、更新ステートメントによる変更が保存されません。最初は、アプリを終了するとデータベースが何らかの形で削除されるのではないかと考えられましたが、同じセッション中には保持されません。データベースを初期化するコードは次のとおりです (FMDB を使用):
これらのメソッドは両方とも、データベースを作成するために呼び出され、呼び出したテーブルに挿入されます。
問題は、以下のステートメントを使用して読み取るようになるとMyTable
、何も返されないことです。
私が見る限り、何も見逃していません。DB は書き込み可能な場所にあるようです。