問題タブ [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# - ExecuteNonQueryへの2回目の呼び出しでSQLite-netが例外をスローする
WinRT アプリで SQLite データベース ファイルにアクセスするために SQLite-net を使用しています。ExecuteQuery を使用してデータベースから読み取るのに問題はありません (テーブルマッピングを使用せず、下で ExecuteDeferredQuery を呼び出す辞書として結果を返します)。
を使用してデータベースにレコードを挿入しようとするExecuteNonQuery
と、"CannotOpen" というメッセージで例外が発生します。
上記の数行だけで、データベースから正常に読み取ることができます。sqlite データベース ファイルへのファイル アクセス許可を再確認し、ファイル アクセス許可の問題を回避するために、コンピューター上のすべてのユーザーにファイルを完全に制御できるようにしましたが、結果は同じで、「開くことができません」というメッセージが表示されます。
ExecuteNonQuery を使用して select ステートメントを実行しようとしましたが (動作するかどうかを確認するためだけに)、それでも例外が発生します。今回は、例外メッセージとして「Row」と表示されます。
何が起こるかを確認するために、ExecuteQuery を使用して挿入を実行しようとしました。例外はスローされず、すべて問題ないように見えますが、データベースに行が挿入されません。
ExecuteQuery は挿入ではなくクエリ用に設計されているため、これは説明できるかもしれませんが、ExecuteNonQuery が例外をスローする理由は何でしょうか?
これが私のコードです(プライバシーのために一般的なもので実際のテーブル名とパラメーターを削除しました):
ただし、このコードは例外をスローしません:
更新:この問題をさらに単純な (そして奇妙な) ものまで追跡しました。このコードは、接続の初期化後の SQLite フレームワークへの最初の呼び出しです。このコードを実行すると、4 行目で例外がスローされます。
更新 2 : ExecuteNonQuery の代わりに ExecuteToDictionary を呼び出すと、機能します。
UPDATE 3 :これらすべての呼び出しの前にconn
(などのオブジェクトからconn.Execute("query...")
)直接クエリを実行しようとすると、失敗します。挿入クエリならエラー、選択クエリならエラー。CannotOpen
Row
ExecuteNonQuery への 2 回目の呼び出しで例外が発生するのはなぜですか?
ExecuteNonQuery で SELECT を実行しようとすると、別のエラー メッセージ "Row" が表示されるのはなぜですか? そして最後に、なぜこれらの例外はユーザーフレンドリーではないのでしょうか?
sqlite - MonoTouch の sqlite-net で Sqlcipher を使用する
データベースに暗号化を追加する必要がある MonoTouch に ios アプリがあります。データベースは、sqlite-net ライブラリ ( https://github.com/praeclarum/sqlite-net ) を使用して作成されます。sqlite-net で Sqlcipher を使用することは可能ですか?
私が見つけたサンプルは Ado.net を使用しています。正常に動作します.. Sqlcipher を sqlite-net と統合するには?
sqlite - Windows 8 ストア アプリを 8.1 sqlite に移行する問題
現在、Windows ストア アプリを Windows 8.1 プレビューにリターゲットしようとしています。問題は、私のプロジェクトの 1 つで sqlite-net パッケージを使用したことです。ここで説明されている手順に従いました: http://www.lyalin.com/2013/07/09/sqlite-for-windows-runtime-for-windows-8-1-apps/および sqlite Visual Studio のプレリリース版をダウンロードしましたこのリンクからの拡張: http://www.lyalin.com/2013/07/09/sqlite-for-windows-runtime-for-windows-8-1-apps/。プロジェクトに Windows ランタイム用に新しくインストールした sqlite への参照を追加しましたが、ビルド中にエラーが発生しました。
どこかのフォーラムで、プロジェクトから Microsoft Visual C++ ランタイム パッケージへの参照を削除すると、問題が解決することが示唆されました。ソリューション全体を正常にコンパイルした後、実行時に次の例外が発生しました。
次の行で例外がスローされます。
SQLite.cs ファイル (ファイルは前述の sqlite-net パッケージのものです)。
プロジェクトのフォルダ bin/Debug/AppX にはファイル sqlite3.dll が含まれています。私のソリューションのすべてのプロジェクトには、プラットフォーム ターゲットとして x86 があります。この問題を解決するにはどうすればよいですか? プロジェクトを移行する前は、すべて正常に機能していました。
.net - Sqlite-net 日時検索
こんにちは、sqlite-net ライブラリを使用して SQLite データベースから日時を取得する際に問題があります。Db 列の型は DATE です。レコードの 1 つの例の日付は次のとおりです: 2013-08-02
私はモデルを持っています:
次のコード行を実行します。
AccountingDate を除くすべてのフィールドが正しく入力され、すべての DateTime フィールドに次の値が入力されます: {1/1/0001 12:00:00 AM} (Visual Studio デバッガー ビュー)。日付が正しく解析されないのはなぜですか? Db 列タイプを DATETIME と TEXT に切り替えてみましたが、同じ結果が得られました。
編集。上記で使用されているオブジェクト dc は、sqlite-net ライブラリの SQLiteConnection 型です。
c# - sqlite-net が親クラスの主キーを認識できない
FileDownloadContentModel
拡張するクラスがありますIBaseContentModel
ここにあるIBaseContentModel
:
何らかの理由で、sqlite-net はテーブル マッピングを取得するときに主キーを認識できません。主キーがnullであることを示しています。FileDownloadContentModel
クラスにID(主キー)を直接含めると、主キーをIDとして認識できます。
これは既知のバグですか、それともここで何か間違ったことをしていますか? どんな助けでも大歓迎です、ありがとう!
更新しました
私は今それをもっと調べましたが、それは私の愚かな間違いです. sqlite の 2 つの「インスタンス」があり、何らかの理由で IBaseContentModel が FileDownloadContentModel とは異なる sqlite のインスタンスを使用していたため、主キーが認識されませんでした (同じインスタンスからのものではないため)。たとえば、パッケージ名が異なる 2 つの完全に異なる sqlite.cs ファイルを意味します。
mvvmcross - MvvmCross で RIO と Sqlite-net を使用する
優れた mvvmcross-library では、RIO バインディングを使用して読み取り不能なコードを防ぐことができます。
次に、Title.Value を使用して値を読み書きできます。モデルをより読みやすくします。
通常、このプロパティは次のように記述されます。
しかし、sqlite-net を使用したい場合、これらのフィールドはゲッターとセッターを備えた基本型ではないため、データベースにストリーミングできません。
それを回避するためのいくつかのオプションを考えることができます:
- モデルに似た新しい単純なオブジェクトを作成しますが、直接の db フィールドのみを使用します。そして、モデルに単純なインポート/エクスポートの静的メソッドを作成します。これにより、実際のデータベースに関連付ける必要のない複雑なモデル コードとの闘いを防ぐこともできます。
- sqlite-net が NC フィールドの読み取りを理解できるようにします。マッパーのコードを読み込んでみましたが、ゲッターセッターに依存しているので大変な作業になりそうです。ジェネリックである可能性のある型にカスタム マッピングを挿入する方法が見つかりませんでした。
- RIO を削除し、RIO に頼るのではなく、自分ですべてのコードを挿入します。
多分誰かがアドバイスを持っていますか?
sql-order-by - SQLite-Net: ORDER BY 句で比較を使用する
私は SQLite-Net データベースを使用しており、次のように比較して注文したいと考えています。
(注: value1 と Field1 は両方とも整数です)
これにより例外がスローされます。
System.NotSupportedException: Order By はサポートしていません: i => i.Field1 > value1
回避策として、このクエリを 2 つの部分に分割しました。
- Field1 が value1 より大きいアイテムを選択します
- Field1 が value1 以下のアイテムを選択します
そして、これらの結果が 1 つの結果に結合されます。
SQLite-Net を使用してこれを処理するより良い方法はありますか?