簡體   English   中英

SQL Server CE 3.5盡早切斷字符串(C#)

[英]SQL Server CE 3.5 cuts off strings early (C#)

大家好,我正在編寫一些使用SQL Server CE 3.5的代碼,但遇到了一個非常奇怪的問題。 我在需要存儲完整文件路徑的表之一中有一個字符串字段。

在嘗試解決此問題的過程中,我將該字段設置為最大大小為4000的nvarchar ,但它仍在剪切更長的字符串,這些字符串比限制的長度短得多。

例如:

D:\iTunes\iTunes Media\Music\Abigail Williams\In The Absence Of Light\02 Final Destiny Of The Gods.m

明顯小於4000個字符,但在字符串末尾缺少p3

我正在使用表適配器通過以下查詢將數據輸入數據庫:

INSERT INTO [Track] ([Artist_ID], [Album_ID], [FilePath], [LastUpdate]) 
VALUES (@Art, @Al, @Fp, @LU)

我知道字符串在插入時完全形成,因為我正在使用以下代碼進行檢查:

if(!temp.Filepath.EndsWith(".mp3"))
    MessageBox.Show("File Error");
this.trackTableAdapter1.InsertQuery(ArtID, AlID, temp.Filepath, File.GetLastWriteTime(temp.Filepath));

該消息框未顯示,因此字符串在插入時必須正確結束。

提取數據的查詢是:

SELECT
   *
FROM Track
WHERE Artist_ID=@Artist_ID AND Album_ID=@Album_ID

涉及的代碼是:

foreach (Database.MusicDBDataSet.TrackRow TR in this.trackTableAdapter1.GetAlbumTracks(AR.Artist_ID, AlR.Album_ID).Rows)
{
   //if (!TR.FilePath.EndsWith(".mp3"))
   //MessageBox.Show("File Path Error");
   this.ArtistList[AR.Name].AlbumList[this.ArtistList[AR.Name].AlbumList.Count - 1].TrackList.Add(new Track(TR.FilePath, AlR.Name, AR.Name));
}

有人遇到過這個問題嗎?

檢查XSD文件。 具體來說,檢查表的FilePath列並查找最大長度。

也許看看SQLServerCE參數大小限制。

具體的最大長度是多少? 大約100個字符嗎? (根據您提供的輸入示例進行猜測)。 100個Unicode字符也與DK Mulligan的答案匹配。 查看SQL ServerCE參數大小屬性

對於長度可變的數據類型,Size屬性描述了要發送到服務器的最大數據量。 例如,Size屬性可用於將發送到服務器的字符串值的數據量限制為前100個字節。

對於Unicode字符串數據,Size屬性是指字符數。 字符串的計數不包括終止字符。

嘗試增大大小以查看這是否是截斷字符串的魔數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM