在MySQL数据库中存储数据列表?

时间:2019-02-06 17:07:30

标签: c# mysql database

我在“类别”列中有一个要存储在我的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 :(得分:1)

简单地使用mysql insert into语句。

插入tbl1值 (1,'Name1',1,空), (2,'Name2',2,null), (3,'Name3',1,null);

(3,'Name3',1,null)当然是tbl1的结构 这将适用于您使用的任何语言,甚至可以使用comp行

答案 1 :(得分:0)

MySQL(和MariaDB)don't have list-valued column types,因为它在数据库设计中与first normal form背道而驰。

您要做的是@nbk建议的内容,并使用您选择的任何数据库框架插入多行。如果您还没有一个MariaDB / MySQL,这是一个示例表定义:

Microsoft当前推荐的与数据库交互的方式是Entity Framework Core。那里的文档可以帮助您连接数据库,创建表,向表中添加行并将所有这些内容保存到数据库。

希望有帮助!

答案 2 :(得分:0)

我在代码中添加了using块,以确保即使发生错误也可以关闭和处置数据库对象。

仅将查询文本设置一次,每次循环迭代时都保持相同。同样,将参数添加到循环外部。循环内仅更改参数的值。我们使用.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();
                }
            }
        }
    }