問題タブ [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.
cocoa-touch - FMDatabase で読み取り可能な Date の GUI を介したデータベースへの日付入力
アプリケーションがこのデータベースから読み取る準備ができるように、アプリを出荷する前にデータベースにフィードする必要がある一連のイベントがあります。
NSDate をデータベースに入力して読み戻せるようにする方法を説明する、次のような投稿を見たことがあります。
ここで、次のようなクエリを実行してデータベースに日付を入力します。
このクエリを MesaSQLite アプリケーションで実行すると、返される結果は期待どおり完璧です。
しかし、アプリケーション内で FMDatabase を介して同じクエリを実行すると、レコードが返されません。
私のデータベースの VendorEvents の 1 番目と 2 番目のフィールドのデータ型は、"Date" 型です。データを入力する方法の唯一の違いは、MesaSQLite アプリケーションを使用することです。それで、FMDatabase で結果が得られないために私がやっている可能性のある間違いはありますか?
ありがとう、ラージ
objective-c - SQLite データベースのデタッチ時のエラー - データベースがロックされています
SQLite データベースに基づくシステムがあります。各クライアントにはローカル データベースがあり、たまにメイン サーバーから小さなデルタ .db ファイルだけの更新が届きます。タスクは、デルタ ファイルを使用してローカル データベースにマージすることです。スキーマは両方で同一です。
私のデータベース管理には、ここにある fmdb ラッパーを使用しています。メイン スレッドでは、ローカル データベースへの接続を開いたままにします。差分ファイルがバックグラウンドで到着するので、マージをバックグラウンドで実行して、ユーザー インターフェイスのフリーズを回避したいと考えています。
マージ自体に関しては、私が見つけた唯一のオプションは、デルタ データベースをローカル データベースにアタッチし、次に行を挿入/更新し、最後にデルタをデタッチすることです。これは私が期待したほどスムーズには機能しません。
コードの説明:
- onDeltaGeneratedメソッドは、デルタ データベースを処理する準備ができる (サーバーから到着し、読み取り可能な場所に保存される) たびに、バックグラウンド スレッドで呼び出されます。
- deltaDBPathは、ファイル システム内のデルタ データベースの絶対的な場所です。
- db変数は、開いている FMDataBase 接続を参照します。
コード:
}
このメソッドが初めて呼び出された後、データベースをデタッチしようとするまで、すべて問題ないように見えます。やろうとすると、次のエラーが表示されます。
私も同じことを試みましたが、挿入をトランザクションに入れずに、結果は同じです。もう 1 つのことは、@synchronized 句を削除することでしたが、うまくいきませんでした。私の推測では、バックグラウンド スレッドからローカル データベース接続にアクセスしようとすると失敗しますが、どうしてアタッチして挿入できるのでしょうか? どんな助けでも感謝します。
編集
コードをメイン スレッドに移動したので、データベースはメイン スレッドからのみアクセスできるようになりました。問題は残ります。
編集2
わかりました、すべてを試した後、私はこれをしばらくあきらめましたが、最初の答えがここに現れたときに戻ってきました. 驚いたことに、すべてが正常に機能しているように見えるので、私のコードは正しいに違いありません。XCode、SQLiteDatabaseBrowser、およびアプリケーションを使用してデータベースを開くため、これはファイルをロックしているさまざまなスレッドの問題であると思われます。lsofはファイルがロックされていないことを示していましたが、それは間違っていて、XCode または SQLiteDatabaseBrowser のいずれかがファイルをロックしていたと思います。問題は解決したと思います。ここから得た教訓は、lsof をあまり押し込まず、次回のデバッグをより適切に計画することです。
fmdb - Objective-Cでfmdbを使用してsqliteのすべての列を反復処理する方法
すべての列を検索する必要があるため、where句で各列名を指定する代わりに、すべての列を検索できるメソッドを作成します。
'filter'は、'WHERE remark = [searchText] AND description = [searchText] AND etc...'にすることができます。
ios - iOSでFMDBを使用してSQliteを読み取れない理由
FirefoxツールからDBファイルを作成しましたSQliteマネージャーの名前はmyTestDBです
dbにはViewController1という名前のテーブルがあり、テーブルの内容は5列です(値はすべてTEXTです)
列名で値を読み取りたいので、ここに私のコードがあります...。
多くのサンプルコードがこのメソッドを使用しています
しかし、私がそれを使用すると、コードは一度もwhileループに入りません
そして私のコードはちょうど私に5(null)を記録します...
何故ですか...?
ご協力いただきありがとうございます!
您也益中文回答我、謝謝您!
ios - IOS開発でFMDBを使用してSQLiteから行データ全体を読み取るにはどうすればよいですか?
このようなコードからすべての列データを読み取ることができます...
または、この方法でデータを検索します
ただし、配列の内容が必要な場合は、行全体のデータ(すべての行データが単純な文字列であると想定)
どうすればそれを達成できますか...?
ご協力いただきありがとうございます!
您也益中文回答我、謝謝您
ios - FMDB stringForColumn nil を返す
SQLite3 データベースから生成された FMDB 結果セットをループして、後で使用するオブジェクトを作成しています。データ コンテンツは、さまざまなテキスト エディターとエンコーディングを使用して、さまざまなユーザーによって作成されます。
いくつかのレコードは問題があり、列にテキストがあるにもかかわらず、列の値に nil を返します。
たとえば、コマンドライン クエリを実行すると、データベース内の列のテキストが表示されますが、FMDB メソッド stringForColumn は nil を返します。また、潜在的な原因は、列の内容に含まれる ASCII 文字が多いことであることがわかります。これは、ユーザーが MS Word からテキストをコピーして貼り付けたために発生した可能性が最も高いです。私の質問は、データの一部がこれらの文字でデータベースにある可能性があることを認識して、このタイプの「ダーティ」データを処理する最良の方法は何ですか?
ios - ios fmdb ファイルからデータベースをロード
私は sqlite と fmdb ラッパーを使用しています。load db の私のコードは次のとおりです。
プロジェクトに追加biscuit.sqlite
しますが、このコードは既存のファイルを開く代わりに新しいファイルを作成します。このファイルをロードするにはどうすればよいですか?
objective-c - NSData UIImageJPEGRepresentationがSQLite fmdbに書き込まない
jpeg を nsdata オブジェクトに変換し、そのデータを fmdb ラッパーを使用して sqlite データベースの blob 列に格納しようとしています。
例えば:
t1 は次のように作成されます。
理想的には、データを取り出して、次のように jpeg に変換することができます。
文字列などの他のデータ型にこのタイプのモデルを使用しましたが、問題ありません。私の現在の試みでは、このモデルを文字列列のテーブルと 1 つの blob 列で使用しています。データベースに書き込むと、すべての文字列が正常に保存されますが、上記のように blob 列を読み戻そうとすると、blob 列に対して null が返されます。データベースに書き込む前に、書き込んでいる NSData が null ではなく、jpeg 表現が含まれていることを再確認しました。既知の問題が誰かに飛び出していますか、それとも私が外部で何か間違ったことをしているだけですか?
ios - FMDatabase iOS INSERT の問題
データベースでアプリケーションを作成しています。モーダルには FMDatabase クラスを使用します。ここで、2 つのテーブルにいくつかの新しいデータを挿入する必要があります: -project(id_proj primary key autoince unique, name, baseImage) -imagesforpro(id_img primkey autoincr unique, smallimage, largeimage, id_proj -(void)addProject:(Project*)proj
) . 次に、projectName と baseImage を project テーブルに挿入し、挿入したレコードの id_proj を抽出して、小さい画像と大きい画像を imagesforpro テーブルに挿入する必要があります。また、INSERTの使い方は?私はそれを適切に使用していますか?NSData をデータベースに適切に配置する方法は? ありがとう。これが私がこれまでに持っているものです: