Member 13765884 Ответов: 3

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


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



for (int i = 0; i < CustLB.Items.Count; i++)
{
    ListItem item = new ListItem();
    item.Text = CustLB.Items[i].Text;
    item.Value = CustLB.Items[i].Value;
    OleDbCommand lct = new OleDbCommand("UPDATE [Or] SET [Loc] = (@Loc)", MAcon);
    cmd.Parameters.AddWithValue("@Loc", ",");
    cmd.ExecuteNonQuery();

}


Что я уже пробовал:

string value = "";

for (int i = 0; i < CustLB.Items.Count; i++)
{
    if (value != "")
    {
        OleDbCommand lct = new OleDbCommand("UPDATE [Or] SET [Loc] = (@Loc)", MAcon);
        cmd.Parameters.AddWithValue("@Loc", value += ",");

    }
    value += CustLB.Items[i].Text;
}
// Now you have all the values in comma (,) separated string.

string[] arr = value.split(',');

BillWoodruff

Это, по-видимому, часть другого вопроса, опубликованного после этого. Я предлагаю вам отредактировать их в один вопрос.

Я считаю, что вам нужно потратить некоторое время на изучение основ использования структур данных в WinForms и программирования на C# в целом.

3 Ответов

Рейтинг:
1

Maciej Los

Вы должны избегать использования OR как имя поля. Это зарезервированное слово[^] в большинстве баз данных!

Если вы хотите построить строковое значение, разделенное запятыми, проверьте это:

string commaVal = string.Join(",", CustLB.Items.Cast<object>()
			.Select(x=> x.ToString()));

OleDbCommand lct = new OleDbCommand("UPDATE [Or] SET [Loc] = @Loc", MAcon);
cmd.Parameters.AddWithValue("@Loc", commaVal ",");


Другой способ заключается в использовании класс StringBuilder[^].
Почему? Потому что строка[^] неизменен!

//create new instance of StringBuilder
StringBuilder sb = new StringBuilder();
foreach(object o in CustLB.Items)
{
   //append string
   sb.Append(string.Format("{0},", o.ToString));
}
//finally
string loc = sb.ToString();


Рейтинг:
1

Wendelius

Если я правильно понял вопрос, вы пытаетесь построить список IN в предложении WHERE. Если это так, то, возможно, что-то вроде

OleDbCommand lct = new OleDbCommand("UPDATE [Or] SET [Loc] IN ", MAcon);
string inContent = "";

for (int i = 0; i < CustLB.Items.Count; i++) {
   inContent += $"@loc{i},";
   lct.Parameters.AddWithValue($"@loc{i}", CustLB.Items[i].ToString());
}
inContent = inContent.TrimEnd(',');
lct.CommandText += $"({inContent})";

Кроме того, как уже отмечалось, старайтесь избегать зарезервированных слов в именах.


Рейтинг:
0

BillWoodruff

Чтобы получить строку[] элементов списка:

string[] lbItemsAsStrArray = listBox1.Items.Cast<string>().ToArray();
Интересно, используете ли вы здесь ListView, а не ListBox.


Member 13765884

Я использую здесь список