如何将字典保存到数据库中。 [C#]

时间:2016-08-04 10:32:02

标签: c#

如何将字典保存到数据库中?或者我应该使用不同的方法来获得我想要的输出?

我有两个类别。 类别 - A和 类别 - B

类别 - A 步骤:

  • 我在comboBox1
  • 中选择了类别A.
  • 输入从100到150的序列号。
  • 生成连续出版物并将其添加到combobox2中。
  • ComboBox2由连续出版物组成:{100,101,102,103,104,105 ..等等},没有别的。

Category - A

类别 - B 步骤:

  • 我在comboBox1中选择了B类
  • 输入200到250的序列号。
  • 生成连续出版物并将其添加到combobox2中。
  • ComboBox2由连续出版物组成:{200,201,202,203,204,205 ..等等},没有别的。

Category - B

选择ComboBox1 IndexChangedEvent

当我选择Category - A时,我只看到comboBox2中的A类序列而没有别的。

当我选择Category - B时,我只在comboBox2中看到B类序列而没有别的。

下一步:(所需结果)

  • 我想将每个A类与它的连续出版物和B类存储在数据库中,所以当我重新打开应用程序并选择我的类别A时,我能够看到我在A类中生成的连续出版物comboBox2当我选择Category-B时,我可以在comboBox2中看到我从Category-B生成的连续剧,而不是别的。问题是如何将字典存储到数据库中。

代码

if (comboBox1.SelectedIndex == 0)
            {
                comboBox2.Items.Clear();

                foreach (var item in vals)
                {
                    if (item.Key == 0) //If Key value is 0, if it is CategoryA
                    {
                        comboBox2.Items.Add(item.Value);
                        // MessageBox.Show("Adding: " + (item.Value.ToString()));
                        comboBox2.Refresh();
                    }
                }
            }

                if (comboBox1.SelectedIndex == 1)
                {    
                    comboBox2.Items.Clear();
                    foreach (var item in vals)
                    {
                        if (item.Key == 1)    //If Key value is 1, if it is CategoryB
                        {
                            comboBox2.Items.Add(item.Value);
                            comboBox2.Refresh();
                        }
                    }
                }

ComboBox1代码索引事件已更改

matches

1 个答案:

答案 0 :(得分:2)

保存到数据库需要一些工作,另一个选项(如果结构不会发生太大变化)是将对象序列化为json(Using Newtonsoft's JSON.Net)并持久保存到磁盘。如果您有一个可用的序列化文本,并且需要安全性和/或访问权限以及来自不同计算机的状态,您也可以将序列化文本写入数据库。

您还可以保存应用程序关闭时所选值的状态,以便您可以为用户提供下次打开应用程序时所处的确切视图。

这是在.Net 4.0中测试的工作控制台应用程序(但在VS2015中编写)。

namespace ConsoleApplication1
{
    using Newtonsoft.Json;
    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;

    class Program
    {
        static void Main(string[] args)
        {
            // Populate the dictionary 
            Dictionary<int, string> myDictionary = new Dictionary<int, string>();
            myDictionary.Add(1, "one");
            myDictionary.Add(2, "two");
            myDictionary.Add(3, "three");

            // Serialise it to disk
            string jsonToWrite = JsonConvert.SerializeObject(myDictionary);
            using (StreamWriter sw = File.CreateText("c:\\temp\\YourDictionary.txt"))
            {
                sw.Write(jsonToWrite);
            }

            // Deserialise it from Disk back to a Dictionary
            string jsonToRead = File.ReadAllText("c:\\temp\\YourDictionary.txt");
            Dictionary<int, string> myDictionaryReconstructed =
                       JsonConvert.DeserializeObject<Dictionary<int, string>>(jsonToRead);

            // Check values exist in the two dictionaries
            if (myDictionary.All(x => myDictionaryReconstructed.Any(y => x.Value == y.Value)))
            {
                Console.WriteLine("Success");
            }
            else
            {
                Console.WriteLine("Failed");
            }
        }
    }
}