2012-03-30 134 views
2

Sir, 我在SQL Server中的數據庫有一些問題。 我的項目是與登錄方法的桌面應用程序.... 我的程序是用C#編寫的,正常執行,因爲我想在我的查詢中沒有錯誤... 但是數據不會存儲回程序插入或更新的數據庫。 ..我的數據庫是由Visual Studio 2010作爲數據文件夾中的單獨的mdf文件創建的... 所以,請在此幫助我。下面是一個示例代碼:SQL Server數據庫與我在c中的項目同步#

private void btnLogin_Click(object sender, EventArgs e) 
{ 
    try 
    { 
    using (SqlConnection cn = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename=|DataDirectory|\\Database_File.mdf;Integrated Security=True;User Instance=True")) 
    { 
     using (SqlCommand cmd = new SqlCommand("select * from table_users where user_name='" + txtBoxUserName.Text + "' and user_password='" + txtBoxUserPass.Text + "' ",cn)) 
     { 
      cn.Open();       
      dr = cmd.ExecuteReader(); 
      while (dr.Read()) 
      { 
      if (dr["user_name"].ToString() == txtBoxUserName.Text && dr["user_password"].ToString() == txtBoxUserPass.Text) 
      { 
       ... 
       ... 
       try 
       { 
       using (SqlCommand cmd1 = new SqlCommand("insert into table_user(id,user_name,user_status) values(" + key + "," + active_user_name + "',"+ user_status + ")",cn)) 
       { 
        cmd1.ExecuteNonQuery(); 
        Thread form_name = new Thread(new ThreadStart(thread_Proc_form_name)); 
        form_name.Start(); 
       } 
       } 
       catch { throw;} 
      } 
      } 
     } 
    } 
    } 
    catch { throw;} 
} 

程序以我想要的方式運行,但是當我查看數據庫表時未保存更改。例如:當我登錄時,登錄信息在下次運行時不會顯示在數據庫中。 登記冊的情況也是如此......每次運行應用程序時,我都必須重複註冊。我不知道錯誤在哪裏。請幫我先生我要去的地方錯了....

感謝&問候 SAURABH馬哈詹

+0

請注意,TRY CATCH {throw;}是一個默認行爲。您可以刪除這些,它不會改變任何東西到您的應用程序 – Mathieu 2012-03-30 02:48:31

+0

謝謝先生...但使用try catch只是一個小應用程序的選項...我們使用它或它不會影響這個問題... – Saurabh 2012-03-30 02:52:40

+0

請點在代碼假設更新數據庫的地方,因爲我沒有看到它!如果它是cmd1,它是一個空插入查詢! – Mathieu 2012-03-30 02:53:35

回答

0

這個片段建議,我認爲你在Visual Studio解決方案得到了Database_File.mdf

AttachDbFilename=|DataDirectory|\\Database_File.mdf 

每次構建項目時,Database_File.mdf都將被複制到輸出目錄,覆蓋之前的任何文件。

此行爲是設計使然。

請注意,user instances are deprecated,您應該考慮將您的Database_File.mdf附加到您的SQL Express實例的開發期間或使用像SQL Server LocalDB之類的東西。

+0

非常感謝,先生, – Saurabh 2012-03-30 03:29:53

+0

所以你的意思是,而不是| DataDirectory | \\ Database_File.mdf我應該連接數據庫與sql服務器正確.. ?? – Saurabh 2012-03-30 03:31:13

+0

@Saurabh出於開發的目的,我會在SQL Server上使用數據庫。但是,請注意,如果您正在開發它,那麼您可能會犯錯誤並且搞砸一些東西,這就是爲什麼VS每次都會用一個好的副本覆蓋您的數據庫。稍後,您可能希望從SQL Server中獲取最終的'.mdf',並使用用戶實例(即使它們已棄用)或SQL Server LocalDB將其與應用程序打包在一起。 – 2012-03-30 03:38:02

0

從C#.NET連接到SQL Server,你需要創建一個連接字符串,如下面:

private SqlConnection connection; 
private string connectionString = @"Server=(local);Database=Embedding_SQL_Test;User ID=sa;Password=123"; connection = new SqlConnection(connectionString); 

接下來,使用上面創建的SqlConnection對象創建一個SqlCommand,如下圖所示:

SqlCommand cmd = new SqlCommand("select * from Customer where CustomerID = @Cid", connection); 

這裏所示的SQL查詢可以由SELECT,INSERT,UPDATE查詢等

接着被替換以執行SQL曲在數據庫中,您使用以下方法:ExecuteReader - 執行SELECT查詢,ExecuteNonQuery - 執行INSERT,DELETE,UPDATE和SET語句。

這是關於如何從C#連接到SQL Server數據庫並在數據庫中執行SQL查詢的簡短描述。有關連接字符串的詳細信息,這些方法及其參數將檢查以下鏈接:(http://www.shahriarnk.com/Shahriar-N-K-Research-Embedding-SQL-in-C-Sharp-Java.html)在這裏您還可以找到有關如何將參數傳遞給SQL查詢以及調用存儲過程等等的詳細信息。

相關問題