#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. это не вызовет никакой ошибки или исключения, если вы используете лучший код .. я использую этот трюк на одном из своих веб-сайтов и работаю правильно… может быть какая-то другая причина исключения..