0

C#の文字列型は長い文字列を保持できることを知っているので、asp.netフォームからテキストを渡すと、その文字列変数でテキストが実際に切り取られます。

コードをトレースすると、テキスト ビジュアライザーで長い文字列全体が表示されますが、コードを実行すると、MySQL データベースでこの文字列変数データが​​半分にカットされていることがわかります。MySQL の列サイズは TEXT で、最大 4 GB まで保持できます。

だから、この文字列の切り捨てで何が起こっているのか誰かが知っているかどうか疑問に思っていました.

4

3 に答える 3

3

TEXT の最大文字数は 65,535 文字です。コンテンツが 64K バイトを超える場合は、フィールド文字数の制限を超えている可能性があります。

これをテストするには、フィールド タイプを MEDIUMTEXT または LONGTEXT に変更します。

于 2013-03-12T23:06:38.470 に答える
1

MySQL dosc によると、TEXT フィールドは最大 L + 2 バイト (L < 2^16) まで保持されます。-> http://dev.mysql.com/doc/refman/5.6/en/storage-requirements.html

1 文字が 2 バイトの場合、最大サイズは 32.7k 文字です。

于 2013-03-12T23:11:23.940 に答える
0

http://www.electrictoolbox.com/maximum-length-mysql-text-field-types/

TEXT データ型は、VARCHAR や CHAR テキスト型よりもはるかに多くのデータを格納できるため、Web ページや類似のコンテンツをデータベースに格納する場合は TEXT 型を使用する必要があります。

各データ型に格納できるデータの最大量は次のとおりです。

TINYTEXT 256 バイト

テキスト 65,535 バイト ~64kb

MEDIUMTEXT 16,777,215 バイト ~16MB

LONGTEXT 4,294,967,295 バイト ~4GB

ほとんどの場合、TEXT タイプで十分ですが、コンテンツ管理システムをコーディングしている場合は、データ サイズの制限に問題がないように、長いページには MEDIUMTEXT タイプを使用することをお勧めします。

更新: SqlParameter.Size (MySQL の場合も同じだと思います) は、DB に送信する前に文字列の内容を切り取ることができます。

http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlparameter.size.aspx

可変長型 (nvarchar など) の出力パラメーターの場合、パラメーターのサイズは、出力パラメーターを保持するバッファーのサイズを定義します。出力パラメーターは、Size で指定されたサイズに切り詰めることができます。文字型の場合、Size で指定するサイズは文字単位です。

明示的に設定されていない場合、サイズは指定されたパラメーター値の実際のサイズから推測されます。

したがって、ADO.NET パラメータの Size パラメータを設定するコードを削除するか、int.Max 値に設定してみてください。

于 2013-03-12T23:15:11.140 に答える