[英]How to put large text data (~20mb) into sql cs 3.5 database?
我正在使用以下查询插入一些大文本数据:
internal static string InsertStorageItem =
"insert into Storage(FolderName, MessageId, MessageDate, StorageData) values ('{0}', '{1}', '{2}', @StorageData)";
我用来执行此查询的代码如下:
string content = "very very large data";
string query = string.Format(InsertStorageItem, "Inbox", "AXOGTRR1445/DSDS587444WEE", "4/19/2010 11:11:03 AM");
var command = new SqlCeCommand(query, _sqlConnection);
var paramData = command.Parameters.Add("@StorageData", System.Data.SqlDbType.NText);
paramData.Value = content;
paramData.SourceColumn = "StorageData";
command.ExecuteNonQuery();
但是在最后一行,我得到以下错误:
System.Data.SqlServerCe.SqlCeException was unhandled by user code Message=The data was truncated while converting from one data type to another. [ Name of function(if known) = ] Source=SQL Server Compact ADO.NET Data Provider HResult=-2147467259 NativeError=25920 StackTrace: at System.Data.SqlServerCe.SqlCeCommand.ProcessResults(Int32 hr) at System.Data.SqlServerCe.SqlCeCommand.ExecuteCommandText(IntPtr& pCursor, Boolean& isBaseTableCursor) at System.Data.SqlServerCe.SqlCeCommand.ExecuteCommand(CommandBehavior behavior, String method, ResultSetOptions options) at System.Data.SqlServerCe.SqlCeCommand.ExecuteNonQuery() at Chithi.Client.Exchange.ExchangeClient.SaveItem(Item item, Folder parentFolder) at Chithi.Client.Exchange.ExchangeClient.DownloadNewMails(Folder folder) at Chithi.Client.Exchange.ExchangeClient.SynchronizeParentChildFolder(WellKnownFolder wellknownFolder, Folder parentFolder) at Chithi.Client.Exchange.ExchangeClient.SynchronizeFolders() at Chithi.Client.Exchange.ExchangeClient.WorkerThreadDoWork(Object sender, DoWorkEventArgs e) at System.ComponentModel.BackgroundWorker.OnDoWork(DoWorkEventArgs e) at System.ComponentModel.BackgroundWorker.WorkerThreadStart(Object argument) InnerException:
现在我的问题是我应该如何将如此大的数据插入sqlce db?
问候,
安妮迪娅(Anindya Chatterjee)
您是否阅读过有关ntext数据类型的文档?
可变长度Unicode数据,最大长度为230-1(1,073,741,823)个字符。 存储大小(以字节为单位)是输入字符数的两倍
您的大型内容的大小是否大于最大值? 如果是这样,那么您不走运-您需要一种数据类型,该数据类型可以存储比ntext更多的数据。 我的建议是:varbinary(MAX)或Image。
也许您应该考虑一下为什么必须将如此大量的文本放入数据库中。 也许对外部文件的引用(链接-路径)将是一个更好的解决方案。
您列出的代码应该起作用。 你先检查基地了吗?
我认为这可能是引发异常的其他专栏之一。 按照可能性:
因此,首先使用StorageData = NULL或一个小文本对其进行测试。
我建议在创建参数时指定字段的长度:
var paramData = command.Parameters.Add("@StorageData", System.Data.SqlDbType.NText, /* column length here */);
paramData.Value = content;
我是否可以将StorageData
的类型从ntext
更改为image
并将内容写为Binary。 我想那对您有帮助。
干杯AK
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.