Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
0 / 0 / 1
Регистрация: 02.03.2010
Сообщений: 46

Неправильная работа хранимой процедуры

13.07.2012, 15:20. Показов 963. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
День добрый.
Сложилась у меня такая ситуация:
В БД (MS SQL) есть следующая ХП:
T-SQL
1
2
3
4
5
6
7
8
9
CREATE procedure [sp_UpdateFiles]
(@path varchar, @id_file int)
as
BEGIN
Begin transaction
  UPDATE Files Set Path = @path
  WHERE id_file = @id_file
commit
END
В программе, соответственно, обращаюсь к ней:
C#
1
2
3
4
5
6
7
8
9
10
11
public void UpdateFiles(string newpath, int id)
{
    SqlConnection connect = new SqlConnection(ConnStr);
    SqlCommand cmd = new SqlCommand("sp_UpdateFiles", connect);
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.Parameters.Add("@path", SqlDbType.VarChar).Value = newpath;
    cmd.Parameters.Add("@id_file", SqlDbType.Int).Value = id;
    connect.Open();
    cmd.ExecuteNonQuery();
    connect.Close();
}
newpath виглядит примерно так: \\srv\arcive\FilesArh\Test\4798639.txt
Ну а id - он и есть id.

Проблема в том, что после выполнения ХП в поле Path появляется только один '\' и всё.
Что не так? Где я ошибся?

Добавлено через 20 минут
Я конечно, сейчас сделал работу без использования ХП, просто выполняя апдейт. Так всё работает. Но хотелось бы понять, почему неверно сработала процедура? Может, виной двойной слэш в начале строки?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.07.2012, 15:20
Ответы с готовыми решениями:

Создание хранимой процедуры
Здравствуйте, помогите пожалуйста с программой. Есть БД техникума и нужно создать приложение которое позволяет делать выбор группы...

Результат хранимой процедуры
Есть хранимая процедура на SQL Server, которая принимает два параметра - логин и пароль. и если пара совпадает с записью в базе, то...

Вызов хранимой процедуры
есть хранимая процедура. Надо ее вызвать и что бы она заменила один столбец в БД. если что проект делаю в WPF

7
1057 / 864 / 195
Регистрация: 31.03.2010
Сообщений: 2,521
17.07.2012, 12:09
C#
1
cmd.Parameters.Add("@path", SqlDbType.VarChar).Value = newpath.Replase(@"\", @"\\");
0
0 / 0 / 1
Регистрация: 02.03.2010
Сообщений: 46
17.07.2012, 12:42  [ТС]
Да нет, строка передается в правильном виде. В примере я показал то, что должно было появиться в поле таблицы.
0
57 / 57 / 15
Регистрация: 22.09.2011
Сообщений: 319
17.07.2012, 14:21
Значение newpath передаётся в функцию не пустым?
0
1057 / 864 / 195
Регистрация: 31.03.2010
Сообщений: 2,521
17.07.2012, 15:21
символ \ - это специальный символ, который указывает на начало эскейп-последовательности. потому для коррекного отражения символа \ необходимо использовать \\
0
0 / 0 / 1
Регистрация: 02.03.2010
Сообщений: 46
18.07.2012, 18:24  [ТС]
Ребята, всё передается правильно. Строка не пустая. В примере я указал, что должно было записаться в БД, сама же строка в программе передается в виде "\\\\srv\\arcive\\FilesArh\\Test\\479863 9.txt". А в поле таблицы появляется только '\'.
0
Эксперт .NET
 Аватар для kolorotur
17823 / 12973 / 3382
Регистрация: 17.09.2011
Сообщений: 21,261
19.07.2012, 00:37
У вас тип параметра хранимой процедуры указан как varchar без указания размера, что по умолчанию делает аргумент длиной в 1 символ. Вот этот первый символ строки и передается.
Укажите максимальный размер строки, varchar(256), например.
1
0 / 0 / 1
Регистрация: 02.03.2010
Сообщений: 46
23.07.2012, 18:37  [ТС]
Цитата Сообщение от kolorotur Посмотреть сообщение
У вас тип параметра хранимой процедуры указан как varchar без указания размера, что по умолчанию делает аргумент длиной в 1 символ. Вот этот первый символ строки и передается.
Спасибо. В упор не видел.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.07.2012, 18:37
Помогаю со студенческими работами здесь

Отчет из хранимой процедуры
Подскажите, как в Visual Studio 2010 создать отчет на основе хранимой процедуры? код процедуры ALTER procedure . @_param1 Date, ...

Вызов хранимой процедуры
Хочу обновить бд с помощью хранимой процедуры ALTER procedure . @id_TP int, @id_worker int, @DT datetime, @id_Texbook int, @col_vo int...

Вызов хранимой процедуры
Здравствуйте, помогите пожалуйста. Мне нужно сделать, чтобы на форму в ЛистБокс выводилась информация, которую выбирает с сервера...

Вызов хранимой процедуры
Как вызвать хранимую процедуру в БД Access через Viasual Studio 2015 Community. Хранимые процедуры: Доабвление, удаление из БД, Выборка и...

Вызов хранимой процедуры
Добрый день У меня есть процедура хранимая в MySQL на добавление строки CREATE DEFINER = `root`@`%` PROCEDURE `NewProc`(IN `fam`...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru