Вопрос

Я использую asp.net и я пытаюсь сохранить значения флажков в базе данных.В одно и то же поле базы данных может быть введено несколько флажков.Так, например, у меня есть два флажка с именами "Запятая" и "Дефис", и если пользователь проверит оба из них, то в базе данных будут сохранены значения ',','-'.Как ты это делаешь?

Спасибо

Это было полезно?

Решение

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

Если вам действительно нужно хранить значения в формате, разделенном запятыми, попробуйте что-то вроде этого:

List<string> values = new List<string>();
if (cbComma.Checked) {
   values.Add("','");
}
...
string result = values.ToArray().Join(",");

Другие советы

Я бы согласился с David Thomas Garcia's рекомендация, можете ли вы сохранить значение в базе данных, используя перечисление (как int или что-либо другое, подходящее для количества опций, которые у вас будут).

Однако, если это не вариант, и вы обязаны хранить их в базе данных в виде строки символов, я бы сделал что-то вроде следующего:


private void LoadData()
{
   string dbVal = DataAccess.GetDbVal(); //Get your value from the database.
   chkComma.Checked = dbVal.Contains(",");
   chkDash.Checked = dbVal.Contains("-");
}

private void SaveData()
{
   string dbVal = "";
   if(chkComma.Checked)
      dbVal += ",";
   if(chkDash.Checked)
      dbVal += "-";
   DataAccess.SaveDbVal(dbVal); //Send the value of dbVal to your data layer to be saved.
}

Обратите внимание, что это не включает в себя какое-либо разделение значений, которые должны быть сохранены в значении, хранящемся в базе данных, но если вам это нужно, вы могли бы использовать Список и делать то, что Дэвид Томас Гарсия упоминается вместе с .toArray().Join(",");в SaveData() и в loadData() просто сделайте dbVal списком, и синтаксис не нуждается в изменении.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top