みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

SQLite3 の UpdateCommand エラー

SQLite3 の UpdateCommand エラー

Windows XP Pro 上で、Visual Studio 2005 Enterprise Edition(VB) を用いて
開発しています。
DB として SQLite3 を使用しているのですが、
あるテーブルのレコードの列を増やしたところ、Update でエラーが出るようになってしまいました。

当該テーブルは1データのみを保持するテーブルで、
"select * from TABLE_XX " で SQLiteDataAdapter を用いてDataSource に読み込ませ、
その内容を画面に表示します。
また、画面から変更された内容は、DataTable の DataRow に反映し DataAdapter の UPDATE
メソッドでDBを更新していました。

今回画面の項目が増えた為、テーブルの項目(列)を増やしたんですが、UPDATE メソッドの実行で

 「DBConcurrencyException はハンドルされませんでした。」
 同時実行違反 : UpdateCommand によって、処理予定の 1 レコードのうち 0 件が処理されました。

のエラーが発生してしまいます。
当該テーブルの列数は23ヶで、先頭列(="ID")がPK(AutoIncrement)です。

増やした列は、既存の列とほぼ同様の取り扱いをしています。

よろしくお願いします。s

投稿日時 - 2010-06-28 18:41:08

QNo.6001726

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

3人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

追加した列のデータ型は何でしょうか?

こちらのSQLite.DLL使用ですよね?
http://sqlite.phxsoftware.com/

投稿日時 - 2010-07-20 13:33:36

補足

paraspor さん、回答ありがとうございます。

追加した列は複数あり、INTEGER型、TEXT型の混在です。


試行錯誤する中で、試しに追加した列の中のすべてのINTEGER型をTEXT型に置き換えたところ
UPDATEメソッドのエラーが発生しませんでした。

既存の列にはINTEGER型の列が存在しているのですが、
追加した列のINTEGER型だけがUPDATEメソッドに対して悪さをしているようです。

単純にINTEGER型が間違っているとは思えませんので、何か他との複合技により
UPDATEを阻害されているのでは…と考えています。

一応TEXT型の列に置き換えた上で開発を進め、現在テスト中ですが、現時点では問題は出ておりません。

一見、一件落着っぽいのですが、根本的な解決が見られていない事 や
今後のSqliteでの開発でのDB設計に 大きな不安が残るのも事実です。

また、SQLite.dll の出所は不明です。
ちなみにSQLite.dll のプロパティ(バージョン情報)は
・ファイル バージョン: 1.0.65.0
・説明:        System.Data.SQLite Interop Library
・著作権:       Released to the public domain
詳細:
(コメント)      http://sqlite.phxsoftware.com
(ファイル バージョン) 1.0.65.0
(言語)        英語(米国)
(正式ファイル名)   SQLite3.DLL.3.6.16
(製品バージョン)   1.0
(製品名)       System.Data.SQLite
(内部名)       SQLite.Interop.DLL
です。

よろしくお願いします。

投稿日時 - 2010-07-20 19:29:06