2015-05-17 51 views
-3

我想將字典存儲在數據庫中,我已經使用JSON將字典序列化爲string並尋找將數據插入數據庫的方法。用JSON轉換成數據庫的C#字典

string stringDict1, stringDict2l 
stringDict1 = JsonConvert.SerializeObject(dict1); 
stringDict2 = JsonConvert.SerializeObject(dict2); 

現在,反序列化是這樣的:

dict1 = JsonConvert.DeserializeObject<Dictionary<string, double>>(stringDict1); 
dict2 = JsonConvert.DeserializeObject<Dictionary<string, double>>(stringDict2); 

序列化的文字是這樣的:

「{\」 約翰\ 「:0.2,\」 太陽\「:0.33, \「花\」:0.5,SO ON}」

我如何可以將那些dictioanries到數據庫,然後從數據庫讀取德使用JSON序列化值再次字典?

+4

你可以像任何其他字符串一樣插入json字符串到數據庫:) http://www.codeproject.com/Articles/4416/Beginners-guide-to-accessing-SQL-Server-through-C –

回答

0

你需要做這樣的事情:

using (SqlConnection conn = new SqlConnection("FULL CONNECTION STRING")) // Can also retrieve using ConfigurationManager or WebConfigurationManager 
{ 
    using (SqlCommand cmd = new SqlCommand("INSERT INTO table1 (col1) VALUES (@Val1)", conn)) 
    { 
     cmd.CommandType = CommandType.Text; 
     SqlParameter sp = new SqlParameter("@Val1", SqlDbType.VarChar); 
     sp.Direction = ParameterDirection.Input; 
     sp.Value = var1; 
     cmd.Parameters.Add(sp); 
     conn.Open(); 
     cmd.ExecuteNonQuery(); 
    } 
} 

然後是這樣的:

using (SqlConnection conn = new SqlConnection("FULL CONNECTION STRING")) 
{ 
    using (SqlCommand cmd = new SqlCommand("SELECT col1 FROM table 1", conn)) 
    { 
     cmd.CommandType = CommandType.Text; 
     DataTable dataTable = new DataTable(); 
     using (SqlDataAdapter sqlDataAdapter = new SqlDataAdapter(cmd)) 
     { 
      sqlDataAdapter.Fill(dataTable); 
     } 
     return dataTable; 
    } 
} 

我們使用的包裝類對象來處理這一切對於我們,所以我」所有這一切都不是100%,而是從我們的包裝類的各個部分收集到的。應該幫助。另外,如果您將其包裝在using聲明中,則通常不必擔心記住關閉連接或處置對象。

+0

與JSON字符串相比,示例中的'Val1'和'Var1'和'var'是什麼?我應該把哪些價值投入他們? –

+0

您唯一需要擔心的是'sp.Value = var1',因爲'var1'將會是您的序列化對象。我會推薦參考Michael結合這個答案評論的鏈接。 – ahwm