TRUNCATE文でエラー

投稿者:アーク 投稿日:2025/05/22(Thu) 11:07:39 No.2479

いつもお世話になっております。アークです。

SQLiteを使い始めています。
テーブルを作成してファイルから読み込んだり、
それを表示させる事はできました。
只、TRUNCATE文で全レコードを削除しようとすると下記のようなエラーになります。

SQL logic error
near "TRUNCATE": syntax error
SQLiteException SQL logic error
near "TRUNCATE": syntax error
場所 System.Data.SQLite.SQLite3.Prepare(SQLiteConnection cnn, String strSql, SQLiteStatement previous, UInt32 timeoutMS, String& strRemain)
場所 System.Data.SQLite.SQLiteCommand.BuildNextCommand()
場所 System.Data.SQLite.SQLiteCommand.GetStatement(Int32 index)
場所 System.Data.SQLite.SQLiteDataReader.NextResult()
場所 System.Data.SQLite.SQLiteDataReader..ctor(SQLiteCommand cmd, CommandBehavior behave)
場所 System.Data.SQLite.SQLiteCommand.ExecuteReader(CommandBehavior behavior)
場所 System.Data.SQLite.SQLiteCommand.ExecuteNonQuery(CommandBehavior behavior)
場所 System.Data.SQLite.SQLiteCommand.ExecuteNonQuery()
場所 Produire.Data.データベースエンジン.3(IDbCommand 0)

[エラー番号2] [メイン画面.全レコードを削除する:292行目]
プロデル 2.0.1319 (32)

Re: TRUNCATE文でエラー

投稿者:ゆうと 投稿日:2025/05/23(Fri) 04:04:02 No.2480

こんにちは

次のエラーメッセージは、SQLite側の出力したエラーメッセージをそのままプロデルで出力したものです。
プロデル側の問題ではありませんので、SQLiteでの指示が正しいか確認してください。
「near "TRUNCATE": syntax error」となっていますのでSQLのクエリが文法通りではないと思われます。

> 只、TRUNCATE文で全レコードを削除しようとすると下記のようなエラーになります。
>
> SQL logic error
> near "TRUNCATE": syntax error
> SQLiteException SQL logic error
> near "TRUNCATE": syntax error

データベースエンジンによって指定できるSQLクエリの書き方が異なります。
最新の情報は分かりませんが、SQLiteではTRUNCATE句に対応していないようです。
SQLiteのドキュメント等を参照してください。

また、プロデルに含まれているSQLiteのバージョンは、3.37.0となっています。
比較的最近に導入されたSQL句はサポートしていない場合もありますので、注意してください。

-------
SQLiteというSQLiteデータベースを作る
SQLiteのデータソースは「database.db」
SQLiteへ接続する
SQLiteから「SELECT sqlite_version()」を値だけ取得して、結果とする
結果の内容を情報アイコンで表示する
SQLiteから切断する
-------

了解しました

投稿者:アーク 投稿日:2025/05/23(Fri) 12:43:49 No.2481

こんにちは。アークです。

〉データベースエンジンによって指定できるSQLクエリの書き方が異なります。
〉最新の情報は分かりませんが、SQLiteではTRUNCATE句に対応していないようです。
色々なデータベースで使用可能なSQLクエリは標準化されていると思っていましたが、
データベース毎に対応はまちまちなのですね。

「Access」と「FileMaker」の経験は有るのですが、
何方もマクロを備えているのでSQLクエリを使うのはこれが初めてです。
「TRUNCATE」よりも時間が掛かるようですが「DELETE」で対応する事にします。

丁寧にありがとうございました。

▲ページの先頭へ

- WebForum -