0

sqlit3で複数の挿入値を試している間、21のエラーコードが表示されます。

サンプルクエリ:

 insert into Assembly_master ('ASSEMBLY_MASTER_ID','ASSEMBLY_MASTER_KID','ASSEMBLY_MASTER_CODE','ASSEMBLY_MASTER_NAME','DISTRICT_MASTER_CODE','ASSEMBLY_MASTER_HINDI','DISTRICT_MASTER_KID') values ('1','1','76','HH','194',' ','1'),('2','2','101','ANGARA','1008','','545')
4

2 に答える 2

1

INSERT ステートメントは正しいですが、SQLite 3.7.11以降でのみです。

以前のバージョンを使用している場合は、複数の INSERT ステートメントを使用する必要があります。

于 2013-10-26T19:56:57.460 に答える
0

エラーは、2 番目の挿入 (,'',) の 6 番目の値によって引き起こされます <- 連続する一重引用符 (そのように二重化) は、一重引用符をエスケープする SQLite の方法です (SQL As Understood By SQLite -> HEREからの引用):

文字列定数は、文字列を一重引用符 (') で囲むことによって形成されます。文字列内の一重引用符は、Pascal のように、2 つの一重引用符を連続して配置することでエンコードできます。

これにより、予想される文字列定数の代わりに、SQLite によって処理されるプレースホルダーとして単一引用符文字 (単一引用符で囲まれていない) が残ります。したがって、バインドが試行されると、エラー コード 21 ( SQLITE_MISUSE ) が生成されます。

おそらく、スペース文字 ' ' または NULL を意図していたのでしょうか?

編集: この回答は~明らかに間違っています~ですが、この回答内の情報は SQLite の「落とし穴」であり、あまり言及されていない可能性が高いため、関連する検索用語からここにたどり着いた人に役立つことを願っています.

于 2013-10-26T13:54:59.097 に答える