заменить разрыв строки на r n при отправке обратно в базу данных

#c# #.net #mysql #winforms

#c# #.net #mysql #winforms

Вопрос:

Снова новичок. У меня есть форма на c #, которая извлекает путем вызова веб-службы информацию из базы данных. Одно поле, которое он получает, — это просто «примечания», касающиеся этого клиента. Имеющаяся у меня форма допускает несколько строк в поле примечания, но когда я сохраняю ее (отправляю через веб-сервис обратно в базу данных), она не распознает разрывы строк. Как я могу указать ему заменить разрывы строк кодом /r / n / (правильно?), Чтобы при следующем извлечении из базы данных он знал, как отобразить его в поле примечания?

Это код, который я использую сейчас, который не работает.

      if (MasterRecord.Customer.Notes.Trim().Length < 1)
        {
            string s = "";
            foreach (object o in txtNotes.Text)
            {
                s  = o.ToString()   ("rn");
            }
        }
  

Комментарии:

1. Взгляните на String.Replace(String,String) ? Мне нравится Regex.Replace я сам, но это то же самое — то же самое, на самом деле.

2. @IzzyG, причина, по которой ваш код не работает, заключается в том, что свойство Text элемента управления textbox не поддерживает IEnumerable — интерфейс, необходимый для цикла foreach. Можете ли вы опубликовать код, в котором вы сохраняете данные в базе данных (в веб-сервисе). Если вы используете параметризованный хранимый процесс, ИМХО, у вас не возникнет проблемы с заменой возврата каретки / перевода строки. Также, если Клиент. Примечание имеет любое значение, т.Е. Длина > 0, тогда оно не войдет в оператор if…

3. @JeremyThompson Какое отношение к вопросу имеет параметризованный хранимый процесс?

4. Вам не обязательно это делать — разрывы строк должны сохраняться из вашей формы, через веб-службу и в базу данных, и обратно.

5. @KirkBroadhurst Я согласен, что вам не обязательно этого делать, но мне было любопытно узнать метод, используемый для сохранения данных, например, если текст вставляется в БД с использованием метода adhoc, вам нужно немного подправить sql, например, требуется, чтобы апостроф был разделен другим апострофом (параметры sproc позаботятся об этом), и мне было интересно, происходило ли что-нибудь необычное с переводами строк.

Ответ №1:

Просто сделайте:

 var stringToInsert = txtNotes.Text.Replace("n", "rn");
  

Ответ №2:

Когда вы сохраняете многострочный текст в sql server, замените возврат каретки вашим пользовательским спецификатором новой строки, например: %NL%

 txtNote.Text.Replace(Environment.NewLine, "%NL%");
  

и при извлечении из поля базы данных следуйте обратному подходу:

 MasterRecord.Customer.Notes.Replace("%NL%", Environment.NewLine);
  

если вы получаете доступ к этому на платформе .net, тогда все в порядке .. я не подтверждаю информацию о других платформах, которые получают доступ к этому веб-сервису..

это работает, но для обработки данных через приложение требуется хитрость, при которой в значении поля сохраняется %NL%.

Комментарии:

1. это работает! Спасибо! вы видите какую-либо причину, по которой в реальной базе данных я не вижу «% NL%» и т.д.? я думаю, это скрыто, потому что, когда я копирую содержимое поля, у него есть разрывы строк, я просто обеспокоен, не сработает ли это на всех типах компьютеров, на которых запущено это приложение, или это не лучший способ сохранить разрывы строк в базе данных?

2. я вижу это в базе данных, извините, я искал не в том поле, в любом случае, кто-нибудь знает, есть ли лучший способ сделать это? я знаю, что это работает, но я всегда стараюсь убедиться, что это наилучший из возможных способов, я знаю, что некоторые используют / r / n и т.д.?

3. я получаю исключение, если я открываю форму, если это новый пользователь, для которого я ввожу информацию

4. это не вызовет никакой ошибки или исключения, если вы используете лучший код .. я использую этот трюк на одном из своих веб-сайтов и работаю правильно… может быть какая-то другая причина исключения..