2

我有一个定义为文本的数据库数据类型:

文本列是可变长度列,最多可容纳 2,147,483,647 (2 31 - 1) 个字节的可打印字符。

这究竟是什么意思?我可以将多少个字符串字符保存到文本列中?

基本上,我尝试将 ac# 字符串对象保存到该列中

myString.ToString().Length == 39418

但是当我将它从数据库中拉回来时

myString.ToString().Length == 32768

------------已编辑---------------

伙计们,这很令人困惑。

文本列定义为 2,147,483,647 字节,即 2GB

我要保存的字符串是 ?System.Text.ASCIIEncoding.Unicode.GetByteCount(param.Value.ToString()) 78836 字节,即 0.0000734217 GB

这样可以确认我要保存的内容对于 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 ...");
4

3 回答 3

2

正如我在评论中提到的那样,不要使用它,TEXT因为它已被弃用。用于VARCHARUnicodeNVARCHAR数据。这将允许您存储多达 2GB 的数据。

http://msdn.microsoft.com/en-us/library/ms186939.aspx

可变长度的 Unicode 字符串数据。n 定义字符串长度,可以是 1 到 4,000 之间的值。max 表示最大存储大小为 2^31-1 字节(2 GB)。存储大小(以字节为单位)是输入数据实际长度的两倍 + 2 个字节。nvarchar 的 ISO 同义词是国家字符变化和国家字符变化。

2,147,483,647 字节大约是 1.862GB 和该列的最大容量。我假设您尝试存储的数据对于该列来说太大,因此数据被截断。

于 2013-06-11T12:58:36.570 回答
0

对该列使用nvarchar(MAX)类型

来自数据库的真实示例

于 2013-06-11T13:27:08.107 回答
0

在我的连接字符串中,我需要添加 textsize=2147483647

于 2013-06-12T14:46:17.320 回答