首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL ServerCE3.5提前切断字符串(C#)

SQL ServerCE3.5提前切断字符串(C#)
EN

Stack Overflow用户
提问于 2011-05-15 07:34:07
回答 3查看 429关注 0票数 2

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

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

例如:

代码语言:javascript
复制
D:\iTunes\iTunes Media\Music\Abigail Williams\In The Absence Of Light\02 Final Destiny Of The Gods.m

这显然小于4000个字符,但它缺少字符串末尾的p3

我使用表适配器通过以下查询将数据输入到数据库中:

代码语言:javascript
复制
INSERT INTO [Track] ([Artist_ID], [Album_ID], [FilePath], [LastUpdate]) 
VALUES (@Art, @Al, @Fp, @LU)

我知道字符串在插入时是完全形成的,因为我正在使用以下代码进行检查:

代码语言:javascript
复制
if(!temp.Filepath.EndsWith(".mp3"))
    MessageBox.Show("File Error");
this.trackTableAdapter1.InsertQuery(ArtID, AlID, temp.Filepath, File.GetLastWriteTime(temp.Filepath));

消息框不会显示,因此字符串必须在插入时正确结束。

提取数据的查询为:

代码语言:javascript
复制
SELECT
   *
FROM Track
WHERE Artist_ID=@Artist_ID AND Album_ID=@Album_ID

涉及到的代码是:

代码语言:javascript
复制
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));
}

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

EN

回答 3

Stack Overflow用户

发布于 2011-05-15 07:53:09

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

票数 0
EN

Stack Overflow用户

发布于 2011-05-26 03:24:18

也许可以看看SQLServerCE Parameter的大小限制。

票数 0
EN

Stack Overflow用户

发布于 2011-07-21 11:19:33

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

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

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6005468

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档