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