SQL Server CE 3.5 обрезает строки рано (C #) - PullRequest
2 голосов
/ 15 мая 2011

Привет всем, я пишу код, который использует 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));
}

Кто-нибудь когда-либо сталкивался с этой проблемой раньше?

Ответы [ 3 ]

0 голосов
/ 25 мая 2011

Может быть, посмотрите на параметр SQLServerCE ограничение размера.

0 голосов
/ 21 июля 2011

Какова конкретная максимальная длина? Это около 100 символов? (Предположение на основе предоставленного вами примера ввода). 100 символов Юникода также совпадают с D.K. Маллиган ответ. Рассматривая параметр SQL ServerCE Свойство размера

Для типов данных переменной длины свойство Size описывает максимальный объем данных, отправляемых на сервер. Например, свойство Size можно использовать для ограничения объема данных, отправляемых на сервер для строкового значения, первыми 100 байтами.

Для строковых данных Юникода свойство Size относится к числу символов. Количество строк не включает завершающий символ.

Попробуйте увеличить размер, чтобы увидеть, является ли это магическое число, которое обрезает ваши строки.

0 голосов
/ 15 мая 2011

Проверьте файл XSD.В частности, проверьте столбец FilePath вашей таблицы и найдите максимальную длину.

...