Сохранить список данных в базе данных MySQL? - PullRequest
0 голосов
/ 06 февраля 2019

У меня есть список строковых данных, которые я хотел бы сохранить в моей таблице базы данных MySQL в столбце «Категории».

Есть ли способ сохранить его на ходу, потому что это длинный список.

  public Class PickerView{
  List<string> CategoriesPicker = new List<string>();
  public Button SaveItemsButton = new Button();
  public  PickerView()
    {

        CategoriesPicker.Items.Add("Hotels & Travel");
        CategoriesPicker.Items.Add("Restaurant");
        CategoriesPicker.Items.Add("Wholesalers");
        CategoriesPicker.Items.Add("Automotives");
        CategoriesPicker.Items.Add("Pets");
        CategoriesPicker.Items.Add("Musical Instruments Services");
        CategoriesPicker.Items.Add("Specialty Food");
        CategoriesPicker.Items.Add("Food");
        CategoriesPicker.Items.Add("Boutique");
        CategoriesPicker.Items.Add("Home & Gardens");
        CategoriesPicker.Items.Add("Shopping");
        CategoriesPicker.Items.Add("Education");
        CategoriesPicker.Items.Add("Books,Mags,Music & Video");
        CategoriesPicker.Items.Add("Fashion");
        CategoriesPicker.Items.Add("Event Planning & Services");
        CategoriesPicker.Items.Add("Arts & Craft");
        CategoriesPicker.Items.Add("Local Services");
        CategoriesPicker.Items.Add("NightLife(Bars..)");

        SaveItemsButton.Clicked += SavedItemsButton_Clicked
    }
    private void SavedItemsButton_Clicked(object sender, System.EventArgs e)
    {
         string sqlstring = "server=; port= ; user id =;Password= ;Database=test;";
        MySqlConnection conn = new MySqlConnection(sqlstring);
        try
        {
            conn.Open();
        }
        catch (MySqlException ex)
        {
            throw ex;
        }
        string Query = "INSERT INTO test.maintable (Categories)values('" +(**//I DONT KNOW WHAT TO WRITE HERE TO SAVE ALL AT ONCE**) + "');";
        MySqlCommand cmd = new MySqlCommand(Query, conn);
        cmd.ExecuteReader();
        conn.Close();
    }
 }`

Как сохранить список элементов в CategoriesPicker в базе данных, когда SaveItemsButtonнажата.

Ответы [ 3 ]

0 голосов
/ 06 февраля 2019

MySQL (и MariaDB) не имеют списочных типов столбцов , поскольку это противоречит первой нормальной форме в дизайне базы данных.

Что вы делаете вместо этогоэто то, что предложил @nbk и, используя любую базу данных, которую вы выбрали, вставьте несколько строк.Вот пример определения таблицы для MariaDB / MySQL, если у вас его еще нет:

Текущий рекомендуемый способ взаимодействия Microsoft с базой данных - Entity Framework Core .Там документация может помочь вам с подключением к базе данных, созданием таблицы, добавлением строк в таблицу и сохранением всего этого в базе данных.

Надеюсь, это поможет!

0 голосов
/ 17 февраля 2019

Я добавил использование блоков в ваш код, чтобы обеспечить закрытие и удаление объектов вашей базы данных, даже если есть ошибка.

Задать текст запроса только один раз, он останется неизменным для каждой итерации цикла.,Аналогичным образом параметр добавляется вне цикла.Внутри цикла изменяется только значение параметра.Мы используем .ExecuteNonQuery (не читатель) для вставки, обновления или удаления..ExecuteReader используется для возврата данных.

    private List<string> CategoriesPicker = new List<string>();
    //add all the items to the list
    private void SavedItemsButton_Clicked(object sender, System.EventArgs e)
    {
        string sqlstring = "server=; port= ; user id =;Password= ;Database=test;";
        using (MySqlConnection conn = new MySqlConnection(sqlstring))
        {
            string Query = "INSERT INTO test.maintable (Categories)values(@Category);";
            using (MySqlCommand cmd = new MySqlCommand(Query, conn))
            {
                cmd.Parameters.Add("@Category", MySqlDbType.VarChar);
                try
                {
                    conn.Open();
                }
                catch (MySqlException ex)
                {
                    throw ex;
                }
                foreach (String item in CategoriesPicker)
                {
                    cmd.Parameters["@Category"].Value = item;
                    cmd.ExecuteNonQuery();
                }
            }
        }
    }
0 голосов
/ 06 февраля 2019

Простое использование вставки mysql в оператор.

вставка в значения tbl1 (1, 'Name1', 1, null), (2, 'Name2', 2, null), (3, 'Name3', 1, null);

(3, 'Name3', 1, null) - это, конечно, структура tbl1. Это будет работать на любом языке, который выиспользовать или даже в командной строке

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...