我有一个数据库数据类型定义为Text:
文本列是可变长度列,最多可容纳2,147,483,647(2 31 - 1)字节的可打印字符。
这究竟意味着什么?我可以将多少个字符串字符保存到“文本”列中?
基本上,我尝试将c#字符串对象保存到
列中myString.ToString().Length == 39418
但是当我从数据库中取回时
myString.ToString().Length == 32768
----------- --------------- EDITED
这些人非常困惑。Text列定义为2,147,483,647字节,即2GB
我想保存的字符串是?System.Text.ASCIIEncoding.Unicode.GetByteCount(param.Value.ToString())78836字节,即0.0000734217千兆字节
这样确认我想保存的内容对于Text数据类型列来说不是太大了吗?即我将0.0000734217 GB保存到一个能够处理2GB
的列中我正在使用Sybase。像这样保存:
OdbcParameter param = new OdbcParameter();
param.DbType = DbType.String;
param.Size = int.MaxValue;
param.Value = myBigString
parameters.Add(param);
OdbcHelper.ExecuteNonQuery(connectionString, sql, parameters);
像这样撤退
DataSet ds = new DataSet();
OdbcConnection conn = new OdbcConnection(connectionString);
OdbcDataAdapter adp = new OdbcDataAdapter(command, conn);
conn.Open();
adp.Fill(ds);....
此外,当我尝试这个时,我仍然可以看到数据被截断,因此在检索数据时看起来不像是一个问题
var obj = OdbcHelper.ExecuteScalar(connectionString, "select myBigString FROM ...");
答案 0 :(得分:2)
正如我在评论中提到的,不要使用TEXT
,因为它已被弃用。使用VARCHAR
或NVARCHAR
获取Unicode数据。这将允许您存储最多2GB的数据。
http://msdn.microsoft.com/en-us/library/ms186939.aspx
可变长度的Unicode字符串数据。 n定义字符串长度和 可以是1到4,000之间的值。 max表示最大值 存储大小为2 ^ 31-1个字节(2 GB)。存储大小(以字节为单位) 输入数据的实际长度的两倍+ 2个字节。 ISO nvarchar的同义词是national char vary和national character 变化
2,147,483,647字节大约是1.862GB,是该列的最大容量。我假设您尝试存储的数据对于列太大,因此数据被截断。
答案 1 :(得分:0)
对该列使用 nvarchar(MAX)类型
答案 2 :(得分:0)
在我的连接字符串中,我需要添加textsize = 2147483647