c# - SQL Server CE 3.5 提前切断字符串 (C#)

标签 c# sql sql-server sql-server-ce

大家好,我正在编写一些使用 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/

相关文章:

php - 在 ID 上连接了 2 个表,工作正常,但现在我想回显另一个表的 ID

sql-server - SQL Server Management Studio 每隔几秒挂一次

c# - 从网络浏览器中选择下拉选项

c# - WP8 的 Gif 动画支持

SQL单位值和按组累计和

sql - 可以同时创建带索引的表吗?

sql-server - 触发器中的 If 语句取决于插入的值

c# - 显示来自 ASP.NET 应用程序外部的图像

c# - JSON反序列化为json中缺少键的类[字符串可以是单个字符串或列表字符串]

MYSQL 按一列对结果进行分组,但将唯一的第二列分开