2011-10-11 73 views
0

我從PHP過來和我有一個很難與信息存儲到我的新創建的本地數據庫。我正在使用Microsoft Visual C#2010來幫助我學習和開發。的Microsoft Visual C#2010 - 將數據添加本地數據庫

我讀,很多人不喜歡數據集,並會選擇忽略它們放在一起。這很好,如果我能夠硬連接到我的本地數據庫。 (我沒有使用所提供的服務器數據庫的選擇,因爲我要把我的完整的產品到商業解決方案,這將要求用戶將他們的信息存儲到存儲他們的項目數據的本地數據庫。

我做一個視頻顯示我的Windows窗體和我的數據庫,以及我目前的知識程度。也許你們可以幫忙嗎?http://screencast.com/t/x9Qt1NtOgo6X

+0

此資源幫助我連接到SQL Server精簡版:http://social.msdn.microsoft。 com/Forums/en-US/csharpgeneral/thread/6bdd883a-e1dc-4c6e-8b9c-7d4a98569db7/ –

回答

1

這取決於你的需求,但對於大多數情況下,我強烈建議你使用實體框架或Linq to Sql的數據類,你會好得多......以後者作爲開始...希望它有幫助

[編輯]

如果你想看到一個ORM可以多麼容易:

  1. 您的項目右鍵單擊
  2. 選擇Add New Item
  3. 選擇LINQ到SQL數據類
  4. 當你加它,你就會有一個空白.dbml文件
  5. 轉到服務器資源管理器添加到SQL數據庫
  6. 將連接並刪除表你喜歡的地方
  7. 開始使用類似這樣的實體:

    using(DataClasses1DataContext db = new DataClasses1DataContext(「Data Source = localhost \ sqlexpress;初始目錄= myDBName;集成安全性=真「)){ IEnumerable的 = citiesForUSA db.Cities.Where(X => x.Country.Name == 」美國「);

    City city = new City(); 
    city.Name = "Metropolis"; 
    //etc 
    db.Cities.InsertOnSubmit(city); 
    db.SubmitChanges(); // <-- INSERT INTO completed 
    
    //etc 
    

    }

祝你好運!

:-)

+0

嗨@Matt,所以我想知道,使用數據集而不是實時sql交互的原因是什麼? –

+0

@HudsonAtwell - 沒有「活的sql交互」之類的東西。你指的是什麼? DataSets只是容器來返回查詢結果。 –

+0

我明白了。我相信你已經幫助解釋了它。數據集將有助於保持手頭的數據,並且數據集的任何更改都會反映在對象綁定到該數據集的任何位置。那是對的嗎? 當我說活動的sql交互時,我的意思是說,如果一行被插入到數據庫的後端,任何顯示該sql數據的對象都會自動顯示新輸入的數據和舊數據。這也被稱爲異步更新。但從邏輯上講,我認爲我必須強制數據刷新才能顯示新添加的數據,除非數據集允許這樣做... –

1

下面是一個使用SQLServer的做一個直接插入一些代碼,但你需要一個連接字符串到數據庫。

包括SQL服務器數據庫包含。

using System.Data.SqlClient; 
using System.Data.SqlTypes; 

。 。 。

using (SqlConnection cn = new SqlConnection("XXXXX")) // must put a connection string to your database here 
{ 
    cn.Open(); 
    using (SqlCommand cmd = new SqlCommand("INSERT INTO Session(field1, field2) VALUES(@Value1, @Value2)")) 
    { 
     cmd.Parameters.AddWithValue("@Value1", 4); 
     cmd.Parameters.AddWithValue("@Value2", "test"); 
     cmd.ExecuteNonQuery(); 
    } 
} 
+0

基本上和我幾秒鐘前的解決方案相同。順便說一句,你遺漏了'cn.Open()'。 :) – Amry

+0

何雅,與Windows的Visual C#,我將如何找到我的數據庫連接字符串?我有一個連接字符串爲我的數據集,這是_this_database conn = new _this_database(); (我相信),但對於我的_this_database.sdf文件,我沒有看到我應該使用什麼參考? –

+0

另外,如果你願意。我喜歡cmd.Parameters.AddWithValue(),但我們是否可以繞過這個並將值直接放入sql查詢中?一名受贈人:爲什麼叫做ExecuteNonQuery而不是ExecuteQuery? –

1

那麼,如果你想要一個快速,幾乎接近線路代碼就像你以前用PHP的方式,下面的代碼應該工作。

var conn = new SqlConnection("Your Connection String"); 
var command = conn.CreateCommand(); 
command.CommandText = "insert into sessions (id, name) values (@id, @name)"; 
command.Parameters.AddWithValue("@id", ""); 
command.Parameters.AddWithValue("@name", "test"); 
conn.Open(); 
command.ExecuteNonQuery(); 
command.Dispose(); 
conn.Close(); 

從長遠來看,如果你習慣了與數據相關的/ ORM框架,如實體框架,NHibernate和喜歡的一個會更好。這對於數據操作確實有很大的幫助,讓你的生活變得更加簡單。

+0

Yikes!你不應該在這些IDisposables上使用一些陳述嗎? – CommonSense

+0

您還需要包含標題,正如@CommonSense的回答中所述。 – Amry

+0

@CommonSense,是的,你是對的。我只是懶惰地使用'using'並且不得不在文本框中縮進,所以我明確地調用'conn.Close()'並忘記了'SqlCommand'也是'IDisposable'。通常情況下,我也會在所有地方使用「使用」。 :) – Amry

1

從應用程序訪問數據庫有很多種方法。這些範圍從低級ado.net命令(SqlDataReader等)到使用諸如實體框架的對象關係映射器(ORM)。

所有這些都需要你學習技術,但你可以從這裏開始:

http://windowsclient.net/learn/videos.aspx

+0

賀雅,這些都可以在Visual C#框架內使用嗎?我感覺不太準備跳上一個新的平臺。感謝您的評論! 在PHP中,簡單地說,在腳本的頭部定義數據庫,然後使用mysql_query()來操作語句。 如果使用正確的技術,在c#中今天是否一樣容易? –

+0

@HudsonAtwell - 我真的不明白你的問題。任何.net技術都可以使用任何其他.net技術。這就是.net的好處之一,它可以互相互操作。 –

+0

謝謝,我相信這有助於我理解。所以我應該能夠導入一個不同的類來幫助我在需要時進行數據庫連接,比如SqlDataReader。或者使用一個ORM,這似乎是可能的關於sql表單關係的高級方法。 –