1

C#からSQLite DBへのクエリの実行に問題があります。次のクエリを使用すると、「max」で何かが間違っているというエラーが表示されます。

create table ClockMessages (ID int identity(1, 1) primary key, InsertDateTime DateTime not null, SendDateTime DateTime, Data nvarchar(max));

nvarcharこのフォーマットを使用できませんTEXT。代わりに使用する必要がありますか?

4

4 に答える 4

1

を使用しますTEXT

マニュアルによると、

TEXT-値はテキスト文字列であり、データベースエンコーディング(UTF-8、UTF-16BE、またはUTF-16LE)を使用して格納されます。

于 2013-02-20T08:54:53.730 に答える
1

SQLitevarcharは、タイプを宣言するときにサイズを使用しません。

FAQから

(9)SQLiteのVARCHARの最大サイズはいくつですか?

SQLiteはVARCHARの長さを強制しません。VARCHAR(10)を宣言する と、SQLiteで500文字を入力できるようになります。また、500文字すべてがそのまま保持されます。切り捨てられることはありません

TEXTの代わりにtypeを使用できます。ここからチェックしてください。

文章。値はテキスト文字列であり、データベースエンコーディング(UTF-8、UTF-16BE、またはUTF-16LE)を使用して格納されます。

于 2013-02-20T08:56:47.790 に答える
1

SQLiteには5つのデータ型しかありません。

これらのいくつかを使用するとき

CHARACTER(20)
VARCHAR(255)
VARYING CHARACTER(255)
NCHAR(55)
NATIVE CHARACTER(70)
NVARCHAR(100)
TEXT
CLOB

create tableステートメントで、SQLiteはそれを次のように変換しますText

また

タイプ名に続く括弧内の数値引数(例: "VARCHAR(255)")はSQLiteによって無視されることに注意してください-SQLiteは、文字列、BLOB、または数値。

SQLiteデータ型

于 2013-02-20T08:57:55.810 に答える
0

TEXTを使用してください!sqliteデータ型について詳しくはこちらをご覧ください

TEXT =>値はテキスト文字列であり、データベースエンコーディング(UTF-8、UTF-16BE、またはUTF-16LE)を使用して保存されます。

SQLiteは、より一般的な動的型システムを使用します。SQLiteでは、値のデータ型は、コンテナーではなく、値自体に関連付けられています。SQLiteの動的型システムは、静的型付きデータベースで機能するSQLステートメントがSQLiteでも同じように機能するという意味で、他のデータベースエンジンのより一般的な静的型システムと下位互換性があります。ただし、SQLiteの動的型付けにより、従来の厳密に型指定されたデータベースでは不可能なことが可能になります。

それは注意しました:

SQLiteは、文字列、BLOB、または数値の長さに(大きなグローバルSQLITE_MAX_LENGTH制限を除いて)長さの制限を課しません。

ついに:

文字列またはBLOBの最大長

SQLiteの文字列またはBLOBの最大バイト数は、プリプロセッサマクロSQLITE_MAX_LENGTHによって定義されます。このマクロのデフォルト値は10億(1億または10億)です。次のようなコマンドラインオプションを使用して、コンパイル時にこの値を増減できます。

-DSQLITE_MAX_LENGTH = 123456789現在の実装は、231-1または2147483647までの文字列またはBLOBの長さのみをサポートします。また、hex()などの一部の組み込み関数は、その時点よりかなり前に失敗する可能性があります。セキュリティに敏感なアプリケーションでは、文字列とBLOBの最大長を増やそうとしないことをお勧めします。実際、可能であれば、文字列とBLOBの最大長を数百万の範囲に下げるとよいでしょう。

SQLiteのINSERTおよびSELECT処理の一部で、データベースの各行の完全なコンテンツが単一のBLOBとしてエンコードされます。したがって、SQLITE_MAX_LENGTHパラメーターは、行の最大バイト数も決定します。

sqlite3_limit(db、SQLITE_LIMIT_LENGTH、size)インターフェイスを使用して、実行時に最大文字列またはBLOBの長さを短くすることができます。

于 2013-02-20T08:55:23.330 に答える