簡體   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