問題タブ [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 投票する
4 に答える
20781 参照

ios - SQLite で最後に挿入された行の ID を取得する最良の方法

iPhone で、FMDB を使用して SQLite データベースに最後に挿入された行の ID を取得する最良の方法は何ですか?

するよりも良い方法はありますか:

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

objective-c - FMDB のデータベースをシングルトンにする方法

私はしばらくの間 S​​QLite を使用しており、FMDB に移行することにしました。シングルトンにする必要があります。以下は私のコードです。FMDB がシングルトン d/b にアクセスするには、何を変更する必要がありますか?

これは、FMDB を使用して d/b を初期化するために使用するコードです。

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

objective-c - SQLite: DB エラー、「メモリ不足」

FMDB を使用してレコードを作成し、ad/b に追加しています。d/b を作成する方法は次のとおりです。

エラーは発生しません。ただし、次に「開く」の後に「挿入」を 1 回実行すると、FMDB から DB エラー: 7「メモリ不足」というエラーが表示されます。そして、この後のすべてのSQLステートメントで、同じエラーが発生します(d/bの作成のみでエラーは発生しませんでした!)。挿入のコードは次のとおりです。

これは、最小限のデータを含む非常に小さな d/b です。Inspector を実行しましたが、異常はありませんでした。どんな提案でも大歓迎です。

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

ios - マルチスレッドの問題があるFMDB

私のiOSアプリでは、FMDBを使用してsqlite3dbに接続しています。アプリでは、dbはマルチスレッドで使用されます。その結果、次のようにシングルトンを作成します。

ただし、エラー:FMDataBaseは現在使用中ですが、発生することがあります。次に、インスタンスを更新します。

エラーはまだ存在します。だから私の質問は、シングルトンを正しく作成する方法と、コードがエラーを回避できない理由です。ありがとう!

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

xcode - SQlite-FMDatabaseクエリwhileループが機能しない

「pk」と「text」の2つの列を持つテーブル「keywords」があります。Firefox SQLiteマネージャーでは、「テキスト」列に「john」と「tom」の2つの名前があることがわかります。私のコードにはエラーや警告はありません。シミュレーターで実行していると、コンソールで、Whileループに入っていないことがわかります。FMResultSet"rs"がSQLクエリから結果を取得していないことを意味します。"Openssuccessful"メッセージが表示されます。これは、データベースが問題なく開かれ、データベースパス、データベース名などが正しいことを意味します。コンソールにクエリエラーが表示されないので、私のクエリも正しいです。しかし、「whileループが開始されました」というメッセージが表示されません。私のデータベース配列も空なので、whileループが機能していないことがわかります。FMDatabaseを使用しています。これが私のコードです

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

cocoa - FMDatabase/FMResultSetのバグの可能性

FMDatabaseで問題が発生することはめったにありませんが、今日、奇妙な動作に気づき、これがバグなのか、それとも自分のミスによるものなのか疑問に思いました。

奇妙なことに、これはすべて正常に機能しますが、安全にプレイし、whileループの前に[db hasAnotherRow]を使用するifステートメントを付けたいと思いましたが、結果セットに結果が含まれている場合でも、これはNOを返します。

結果のディクショナリを(FMResultSetのresultDictメソッドを使用して)コンソールに記録すると、FMResultSetから「警告:このセットには列がないようです」という警告が表示されます。whileループで使用できますが。

ここで何かが足りませんか?

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

iphone - sqlite3はデータベースの読み取りに失敗しますが、別のマシンでの同じコミットでは失敗しません

バックグラウンド

sqlite大規模なデータベースに使用するiPhoneアプリがあります。全文検索を使用FTS3しているため、iOS SDKに含まれているライブラリを使用する代わりに、「独自の」sqliteを使用する必要があります。統合されたsqlite.cファイルを使用FMDBし、Obj-Cラッパーとして使用します。

問題

私のプロジェクトはコンパイルされますが、データベースが誤動作しているかどうかを検出するためにインストールした例外でクラッシュします(これについては後で詳しく説明します)。しかし、私のパートナーは、問題なく、楽しくコーディングしています-私とまったく同じコミットリビジョンで。それは奇妙なことです。

具体的には、アプリは最初の読み込み時に次のことを行います。

  1. データベースをユーザーのドキュメントディレクトリにコピーして、書き込み可能にします。(正常に動作しています)
  2. FMDBのdatabaseWithPath:後に。を使用してデータベースを開きますopen
  3. goodConnectionこの時点でFMDBを呼び出すとYES、データベースが実際に開いて機能していることが返されます。
  4. 呼び出しSELECT * FROM sqlite_master WHERE type = 'table'はレコードを返しません。(多くのテーブルがあるはずです)

私が試したこと

ここで、存在しないデータベースを「開く」ようにsqliteに要求すると、データベースが作成されます。これは、この動作がどのように見えるかです。そこで、ターミナルウィンドウを開き、シミュレーターでアプリのDocumentsディレクトリに移動し、次のように入力しました。

これはsqlite3を実行し、もちろん、すべてが正常に見えます。私のデータはすべてそこにあります。

FMDBのopenメソッドを1行ずつステップ実行して、適切なデータベースを開いていることを確認しました。私は確かにそうです。

私が最初に試したのは、Xcode3.2.6へのダウングレードでした。同じ問題なので、コンパイル時にXcode 3/4の違いを除外したと思います(最初はそれを疑っていましたが)。

誰かが試してみるデバッグfu、または私の問題が何であるかについての知識を持っていますか?

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

objective-c - FMDatabaseは「NOTIN」に問題がありますか、それともiPhoneのSQLiteはそれをサポートしていませんか?

FMDatabaseで深刻な問題に直面しています。次のようなクエリを使用しています

「example_alias」の代わりに除外したいエイリアスのリストがある可能性があるため、「NOTIN」を使用しています。しかし、奇妙なことに、このクエリの結果には、除外したいエイリアスを持つすべてのレコードが含まれています。そのため、FMDatbaseは間違ったレコードを選択しています。このクエリをコピーしてSQLiteデータベースブラウザに貼り付けて実行すると、クエリは正しく実行されます。
「IN」の前の「NOT」を削除すると、SQLiteデータベースブラウザは指定されたエイリアスを持つすべてのレコードを表示し、予想どおり、FMDatabaseはそれらを含まないすべてのレコードを表示します...
次のステップでSELECTを置き換えますDELETEを使用しますが、不要なレコードをすべて保持し、保持したいレコードを削除すると、非常に問題が発生します。
これはFMDatabaseまたは基盤となるSQLiteフレームワーク(libsqlite3.dylibを使用しています)の既知のバグですか、それとも何か間違ったことをしていますか?

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

iphone - fmdb iphone 3g 大規模配列

ファームウェア 4.2.1 (8C148) の iphone 3g で fmdb に問題があります。SQL コマンド (データベースからダウンロード) を含む大きな NSMutableArray があります。NSAutoreleasePool (iphone 3g のメモリ解放の一部) を介して NSMutableArray にデータを入力すると、40 MB 以上の配列が得られます。

次に、次のコマンドを使用します。

更新プロセス中に、40/50 Mb のメモリが割り当てられます。Iphone 3g はそれを処理できず、レベル 1 の警告で惨めに失敗し、最終的に終了します。

iPhone 3GS で試してみましたが、問題なく動作します。

誰もそれをスキップする方法について何か考えがありますか? アプリにバンドルされた大規模なデータベースが既に作成されているため、コアデータを使用できません (これは優れたソリューションですが)。

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

iphone - FMDBSqliteでFMResultsetのコピーを取得する方法

メソッドからFMResultオブジェクトの参照を返そうとしましたが、返されたオブジェクトから値にアクセスしようとしましたが、アクセスできませんでした。

したがって、メソッドからFMResultオブジェクトを返し、外部からアクセスする方法を誰かが提案できますか。

前もって感謝します.....