問題タブ [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.

0 投票する
1 に答える
5539 参照

iphone - FMDBがDBに挿入されない


FMDBを使用してDBにいくつかのクエリを挿入しようとしています。
挿入のクエリを確認すると、挿入していると表示されます。
後で、実際にテーブルからデータを読み取ることができます。
しかし、DBから情報を読み取ろうとすると、nullとして返されます。
XcodeプロジェクトでDBを確認したところ、更新されていないようです。
ちょっと混乱します。問題が何である可能性があるかについての提案はありますか?

0 投票する
1 に答える
998 参照

iphone - Sqlite(FMDB)のUITableViewのセクションとインデックス


Sqliteからセクションとインデックスを取得しようとしていますUITableView(ラッパーとしてFMDBを使用しています)。
どこから始めればいいのかわからないようです。
DBから情報を読み戻し、に保存することができますNSMutableArray

私は次のサイトを試しましたが、彼はplistを使用しています。 http://www.icodeblog.com/2010/12/10/implementing-uitableview-sections-from-an-nsarray-of-nsdictionary-objects/

何かアドバイスをいただければ幸いです。

0 投票する
1 に答える
394 参照

sqlite - fmdb からの CoreData テーブルへのアクセス

アプリケーションで DML ステートメントに CoreData を使用していますが、すべて問題ありません。ただし、行数の取得などの単純なクエリに NSFetchedResultsController を使用したくありません。

fmdb を使用することにしましたが、SQL を記述するための実際のテーブル名がわかりません。エンティティとテーブルの名前が一致しません。TextEdit を使用して .sqllite ファイルの中を調べたこともありますが、希望はありません:) FMResultSet *rs = [db getSchema] は行を返しません

多分私の問題に対するより良い解決策がありますか?

前もって感謝します

0 投票する
2 に答える
2680 参照

ios - FMDB executeUpdate DROP コマンドでアプリが停止する

database.db という名前の SQLite データベース ファイルにテーブルを削除したいと考えています。使用後

アプリはクエリの位置で停止します。クエリがコンソールに表示される前の NSLog。クエリの直後の NSlog がコンソール ウィンドウに表示されません。さらに、アプリの実行中に、シミュレーター アプリ フォルダーで database.db-journal という一時ファイルが継続的に作成および削除されます。アプリはクラッシュせず、エラーも発生せず、続行しません...クエリで「IF EXISTS」を削除しても機能せず、バッククォートを削除しても機能せず、セミコロンを削除しても機能しません。
クエリのトレースを有効にすると、FMDB がクエリを処理していることだけが示され、それ以上は何も表示されません。

なぜこれが起こるのか、私は本当に混乱しています。テーブルを削除する前にテーブルを空にする必要があると考えたので、テーブル内のすべてのレコードを削除するクエリを追加しました。しかし、id は問題ではありません。アプリはまだドロップ クエリに引っかかっています。このエラーを解決する可能性がなくなりました。
SQLite Database Browser 2 内で drop コマンドを実行すると、すべて正常に動作します。

デバッガーを使用してさらに調査したところ、ステートメントの戻り値が SQLITE_LOCKED 定数と等しいため、FMDB ラッパーが無限ループに陥っていることがわかりました。これは、削除するテーブルがロックされていることを意味します。以前のクエリで「UNLOCK TABLES」を送信しても、これは解決されません。テーブルがロックされているのはなぜですか? ロックされたテーブルからのレコードの削除が機能するのはなぜですか?

0 投票する
2 に答える
320 参照

iphone - データベース(FMDB)がiPhoneをロードしているときにスプラッシュ画面(UIViewController)を表示する

アプリケーションに少し問題があります。
情報を解析してデータベースに保存するよりも情報を受け取るWebサービスがあります。

私が欲しいのは、すべての情報がデータベースにアップロードされるまでスプラッシュ画面(またはUIViewController)を表示することです(FMDBは私が使用しているデータベースです)。

現在、私が画面を一定期間ロードしていて、それよりも削除されているもの。私が使用しているコードは次のとおりです。
[self performSelector:@selector(removeSplashScreen) withObject:nil afterDelay:30];

問題は、一部の情報がデータベースにロードされ、他の情報はロードされないことです。

この問題を解決する方法についてのヒントを教えてください。

注:スプラッシュ画面は実際にはスプラッシュ画面(Default.png)ではありません。これは、スプラッシュ画面のUIViewController後に表示されるだけです。私はこれをスプラッシュ画面と呼んでいます。

ありがとう

0 投票する
3 に答える
2717 参照

iphone - iphone SQLite(FMDB)に10k以上の行をロードする

辞書アプリを作成していて、用語をiphone辞書に読み込んで使用しようとしています。用語はこのテーブル(SQLite)から定義されています:

ギリシャ語で書いていて、発音区別符号を検索するためのsqliteエンジンにicuがないため、正規化が使用されます。そのため、発音区別符号/大文字と小文字を区別しないようにしています。「ビュー」フィールドである可能性のある用語テキストとは対照的に、これはメインの検索フィールドでもあります。

私はこのようなクラス(POJOのような)を定義しました:

用語.h

用語.c

今私のコードでは、 SQLiteデータベースのラッパーとしてFMDBを使用しています。次のコードを使用して用語をロードします。

次に、termResults全体がUITableView(viewdidload上)にロードされますが、アプリを起動するたびにロードに最大5秒かかります。そのプロセスをスピードアップする方法はありますか?id、termTextにインデックスを付け、SQLiteで正規化しました。

***更新:cellForRowAtIndexPathを追加しました****

0 投票する
2 に答える
1755 参照

iphone - 同じバックグラウンド スレッドで FMDB プロセスを実行しますか?

fmdb を使用して同じデータベースにデータを読み書きする際に問題が発生しています。

私のアプリには、1 つのクラスがバックグラウンド スレッドでデータベースにデータを書き込み、別のクラスがメイン スレッドで同じデータベースからデータを読み取るインスタンスがあり、読み取りプロセスと書き込みプロセスの両方が、数百の NSDictionary のようなかなり大きなデータを処理します。 .

fmdb は「スレッドセーフ」ではないと聞いたことがあります。上記のシナリオで読み書きしようとするとアプリがクラッシュします。アプリがクラッシュしないように、同じスレッドで 2 つの fmdb プロセスを実行するという提案も聞きました。

バックグラウンド スレッドで (NSInvocationOperation を使用して) 両方を実行しようとしましたが、クラッシュします。実際には、競合の原因となった別のバックグラウンド スレッドで実行されていることに気付きました。

問題は、アプリがクラッシュしないように、すべての fmdb プロセスを同じバックグラウンド スレッドで実行するにはどうすればよいかということです。

または、SQL データを処理する代替手段はありますか?

※説明不足で申し訳ありませんが、よろしくお願いします。

読んでくれてありがとう!

0 投票する
1 に答える
646 参照

iphone - 私のiOSアプリはiOS5で本当に遅いですが、それは何でしょうか?

さて、私はしばらくの間店に持っていたシンプルなリーダーアプリを持っています、そしてそれは素晴らしい働きをします。私はコンテンツのsqlitedbを持っており、fmdbを使用してそれと通信します。テキストをロードして、UIWebViewに表示します。かなり単純なもの。

iOS 5が公開されたとき、アプリが正しく実行されていないというメールを受け取り始めました。案の定、実行速度は非常に遅いです。チャプターを切り替えるUISegmentedControlがあります。これは、何かを実行する前に、文字通りUIを10秒間フリーズします。これが当てはまる他のいくつかの例があります。

何が起こっている?アプリは技術的にはまだ機能しますが、非常に遅いため使用できません。他の誰かがこれを見たことがありますか?何が起こっているのかについて誰かが何か考えを持っていますか?

0 投票する
1 に答える
1071 参照

iphone - FMDBのmoveToRow()とrowCount()?

私のアプリには、.sqlite ファイルに 3,000 の試験問題があります。そして、これらの質問は動的に選択され、ユーザーの要求によって並べ替えられます (たとえば、「間違った回答の数で並べ替える」、「アクセスされていない質問のみを選択する」など)。

ユーザーが選択を行うたびに、アプリは対応する SQL ステートメントを作成し、sqlite3 を使用して、すべての結果セットが NSMutableArray (Question クラス) に送信されます。ただし、お気づきのように、これには時間がかかります (約 2 ~ 3 秒かかり、その間に UI が応答しなくなります)。

したがって、rowCount() および moveToRow(int index) メソッドを持つ「カーソル」クラスを作成したいと考えています。

これで、私の考えは

このような。

CoreData がこの目的に適合することはわかっていますが、.sqlite ファイルをこのアプリの Android バージョンと共有する必要があります。CoreData では、すべてのテーブル名とフィールド名が Z_ プレフィックスで始まる必要がありますが、.sqlite ファイルのスキームを変更できません。また、sqlcipher を使用する必要があり、CoreData は sqlcipher では機能しません。

FMDB は、取得された行の数を示し、特定の行に移動するメソッドをサポートしていません。

この機能をサポートする他の SQLite ラッパー ライブラリはありますか?

誰かが、取得した行の ID のみを含む「カタログ」配列を作成し、moveToRow() が呼び出されるたびに行をフェッチすることを提案しています。それが良い代替案であることには同意しますが、別の方法を見つけたいと思っています。