繁体   English   中英

如何将大文本数据(〜20mb)放入sql cs 3.5数据库中?

[英]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)

http://abstractclass.org

您是否阅读过有关ntext数据类型的文档?

可变长度Unicode数据,最大长度为230-1(1,073,741,823)个字符。 存储大小(以字节为单位)是输入字符数的两倍

您的大型内容的大小是否大于最大值? 如果是这样,那么您不走运-您需要一种数据类型,该数据类型可以存储比ntext更多的数据。 我的建议是:varbinary(MAX)或Image。

也许您应该考虑一下为什么必须将如此大量的文本放入数据库中。 也许对外部文件的引用(链接-路径)将是一个更好的解决方案。

您列出的代码应该起作用。 你先检查基地了吗?

我认为这可能是引发异常的其他专栏之一。 按照可能性:

  1. 留言日期
  2. MessageId
  3. 文件夹名称

因此,首先使用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM