【问题标题】:SQL Server CE 3.5 cuts off strings early (C#)SQL Server CE 3.5 提前切断字符串 (C#)
【发布时间】:2011-05-14 23:34:06
【问题描述】:

大家好,我正在编写一些使用 SQL Server CE 3.5 的代码,但遇到了一个非常奇怪的问题。我在需要存储完整文件路径的表之一中有一个字符串字段。

在尝试解决此问题的过程中,我将该字段设置为 nvarchar,最大大小为 4000,但它仍在切割比限制短得多的较长字符串

例如:

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));
}

以前有人遇到过这个问题吗?

【问题讨论】:

  • 能否提供存储/读取表格的代码?
  • 总是2个字符吗?您可以发布您使用的插入/选择代码吗?
  • 已发布,不,有时它会得到“.mp”,有时它会通过整个字符串,有时甚至不会到达“.”。增加和减少最大字段大小似乎根本没有效果
  • 另外,我刚刚进行了大量计数,字符串在特定的最大长度后终止,我只是无法弄清楚长度限制来自哪里。

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


【解决方案1】:

检查 XSD 文件。具体来说,检查表格的FilePath 列并查找最大长度。

【讨论】:

  • 最大长度设置为4000,和数据库中一样
【解决方案2】:

不妨看看SQLServerCE Parameter 大小限制。

【讨论】:

    【解决方案3】:

    具体的最大长度是多少?大约100个字符吗? (根据您提供的输入示例进行猜测)。 这 100 个 unicode 字符也与 D.K. 匹配。穆里根的回答。看SQL ServerCE参数Size Property

    对于可变长度数据类型,Size 属性描述要发送到服务器的最大数据量。例如,Size 属性可用于将字符串值发送到服务器的数据量限制为前 100 个字节。

    对于 Unicode 字符串数据,Size 属性是指字符数。字符串的计数不包括终止字符。

    尝试调整大小,看看这是否是截断字符串的幻数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-17
      • 1970-01-01
      相关资源
      最近更新 更多