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