我有一个定义为文本的数据库数据类型:
文本列是可变长度列,最多可容纳 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 ...");