大家好,我正在编写一些使用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
列并查找最大长度。
关于c# - SQL Server CE 3.5尽早切断字符串(C#),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6005468/