問題タブ [sqlite.net]
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.
c# - SQLite.NET PCL マルチスレッドアクセス MONO
SQLite.Net
forMonodroid
とを使用してきました。Monotouch
スレッド間のアクセスの問題を回避するために、このコードを使用してSerialized
モードを設定しました。
これにより、問題が発生しなくなりました(SIGSEVC
エラーが発生しました)。
ライブラリ コードを に移動しようとしたPCL
ので、使用をやめoysteinkrog/SQLite.Net-PCL
ましたが、構成モードを設定するオプションはもう存在しないようです。コードを検索するとSQLite.Net.Interop.ISQLiteApi
、次の行にあることがわかりました。
そのため、構成を設定する機能は実装されていません。
SIGSEVC
バックグラウンド スレッドが Web サービスからの更新を返すと、Monodroid でエラーが発生します。
データベース接続は静的接続を使用して共有され、すべてのデータベース アクセスは lock(object) を介して共有されます。
質問:
- どうにかして Config を Serialized に設定することは可能ですか?
- または、この問題を回避するために接続とデータベースへのアクセスを定義するより良い方法はありますか?
sqlite - 自動インクリメント主キー制約のためにsqlite.netの「bigint」を整数に置き換える
モバイル プロジェクトに sqlite を使用していますが、長い ID 変数を主キーの自動インクリメントとして使用しようとすると、コードでエラー " Autoincrement is only allowed in integer primary key
" が発生します。このエラーについてオンラインで確認したところ、sqlite の自動インクリメントはbigint
型に対して許可されていないことがわかりました。
興味深いのはbigint
、整数によっても実装されていることです-sqliteにはbigint
型がありません-整数のサイズを使用して、それがaかどうかを判断するだけbigint
です。
http://www.sqlite.org/datatype3.html
bigint
これを修正するために、テーブルを " "で作成するオープン ソース コードを " " に置き換え、integer
通常の整数の境界外で動作することを確認するテスト コードを書きました (目的を達成し、さらに 10 個のオブジェクトを継続的に追加しました)。
現在は機能しているようですが、他の問題が発生する可能性があるかどうかを知りたいです。モバイル アプリ ID をデータベース ID に同期しているため、ID は通常の整数範囲より大きくなります。
このソリューションは有効なソリューションですか? これはどのようなトラブルを引き起こす可能性がありますか?
sqlite - SQLite.NET PCL を使用して SQL ステートメントのバッチを実行する方法
これまで、私は ORM を避け、パラメータ化されたクエリなどを常に手作りしてきました。これは非常に時間がかかり、最初にアプリケーションを開発するときは本当に苦痛です。最近、ORM、特に Sqlite.NET ORM をもう一度見てみることにしました。
SQLite ORM 機能を使用したいのですが、ネイティブ SQL コマンドのバッチを実行してデータベースに事前入力することもできます。
SqliteNetExtensions-MvvmCross dll を使用して 1 対多の関係などを有効にしていますが、これはすべて問題ないようです。私の問題は、データベースに構成データをシードしたいときに発生します。次々と実行される一連の sql ステートメントを含む sql ファイルを単純に提供することを望んでいました。
GitHub から SQlite.NET コードを取得し、テストを実行しました。次に、単純な [Product] テーブルを持つ StringQueryTests クラスを拡張して、次のことを行いました。
これを実行してもエラーは発生せず、実際には最初のコマンドのみが実行されるようです。sb.ToString() の内容を sqlite データベース クエリ ウィンドウに貼り付けると、問題なく動作します。
これは予想される動作ですか?もしそうなら、上記のようなアプローチを使用できるように、これを克服するにはどうすればよいですか。可能であれば、すべての SQL ステートメントを管理するためにオブジェクトを作成する必要はありません。
この問題を克服するために採用できるアプローチがいくつかあることがわかります。この問題を解決できると思われる回避策や提案はありますか?
敬具
アラン。
c# - sqlite.net + monotouch = SIGSEGV crashes
We're using the following:
- Xamarin 3 (Xamarin Forms)
- MonoTouch
- sqlite.net
- iOS simulator/hardware
The app synchronizes data with a server on a background thread. There is only one SQLite connection object shared by the entire app. Foreground queries are executed at the same time the background sync is running. All of this has worked fine on a Windows 8.1 version of the app (i.e., on MSFT Surface and similar). However once we switched to Xamarin/mono we started getting constant crashes as shown below.
Research led to this article: http://www.aaronheise.com/2012/12/monotouch-sqlite-sigsegv/
He's using using Mono.Data.SqliteClient, not sqlite.net as we are.
His solution involves explicitly disposing of Command objects in order to ensure the GC can keep up etc. When I tried to wrap my Command objects (from sqlite.net) in a using(){} clause I found out they are not disposable.
I've tried inserting 100ms delays and that stops the crashes, however it's not a viable solution for us.
Is there any hope for sqlite.net here, or should I look for a different way to use sqlite?
xamarin - Xamarin.* で SQLite.Net の代替として BreezeSharp を使用していますか?
モバイル アプリのデータ管理に BreezeSharp だけを使用した場合、どれだけ効果的で快適でしょうか? ローカルでエクスポート/保存/インポートできるので、サーバーからプルして、主に EntityManager キャッシュで作業するシナリオを想像できました。
キャッシュがどれだけ保持されるか、およびオーバーフローをどのように処理するかという問題が頭に浮かびます。また、キャッシュにディスク ベースのオーバーフロー メカニズムがない場合、エクスポートされたエンティティを管理するために多くのコードを書くことになるのではないかと思います。
xamarin - sqlite.net PCLでInsertOrReplaceを使用するには?
ここから sqlite.net の PCL バージョンを使用しています ( https://github.com/oysteinkrog/SQLite.Net-PCL )。
これが私の単純なクラスです。
LogEntry の新しいインスタンスが作成されると、キーは自動的に 0 に設定されます。日付を何かに設定してから、InsertOrReplace を呼び出します。レコードはデータベースに保存されます。Key フィールドは、最初のレコードであるため、たまたま 0 になる自動インクリメント値を取得します。
次に、LogEntry の新しいインスタンスを作成し (Key は自動的に 0 に初期化されます)、日付を別の値に設定します。次に、InsertOrReplace を呼び出します。Key が 0 の既存のレコードがあるため、そのレコードが更新されます。
これに対処する適切な方法は何ですか?キーを -1 に初期化することを検討しましたが、それもうまくいかないようでした。
誰かがこの作業の例を持っていますか?
sqlite - SQLite.Net.Async を使用した Xamarin.Forms
ここの指示に従いました http://developer.xamarin.com/guides/cross-platform/xamarin-forms/working-with/databases/ - SQLiteデータベースに同期的に接続します。
非同期接続 (SQLiteAsyncConnection) に変更したいのですが、うまくいきません。
ここの指示によると - https://components.xamarin.com/gettingstarted/sqlite-net -パラメータとしてパスが必要なだけです
それが機能しない場合、エラーは、予想されるパラメーターが次のとおりであることを示しています。
接続関数、TaskScheduler および TaskCreationOptions
どうすればいいのかわからず、うまくいく例を見つけることができませんでした。
前もって感謝します