c#
  • sql-server
  • database
  • 2012-09-29 129 views 0 likes 
    0

    我附加了基於服務的數據庫到我的Windows應用程序,我使用下面的代碼來保存數據,它工作正常,但是當我關閉應用程序並再次打開時,我保存的數據被自動清除。如何將數據作爲基於服務的數據庫連接時將數據保存到數據庫?

    如何永久保存數據...

    string c = Application.StartupPath + "\\Stock.mdf"; 
    SqlConnection con = new SqlConnection(@"AttachDbFilename='"+c+"';Integrated Security=True;Connect Timeout=30;User Instance=True"); 
    
    con.Open(); 
    
    SqlCommand cmd = new SqlCommand("Insert into Codedetails values('TF','" + txt_productcode.Text + "','" + txt_productname.Text + "','" + txt_brandcode.Text + "','" + txt_brandname.Text + "')", con); 
    cmd.ExecuteNonQuery(); 
    con.Close(); 
    
    +1

    附註:請不要使用string.Concat/+來構造SQL查詢 - http://stackoverflow.com/questions/332365/xkcd-sql-injection-please-explain –

    +0

    嗨阿列克謝列文科夫,我不明白yu提到這個鏈接 –

    回答

    1

    第一,它是更好地使用初始化目錄,而不是附加文件(常見的做法) 利用處置您的ressources 第三,最好是使用第二做你的SQL查詢中帶參數(SQL數據庫和C#在VS2010 ;-)

    string c = Application.StartupPath + "\\Stock.mdf"; 
    string connectionString = @"AttachDbFilename='"+c+"';Integrated Security=True;Connect Timeout=30;User Instance=True"; 
    using (SqlConnection connection = new SqlConnection(connectionString)) 
        { 
         con.Open(); 
         using (SqlCommand command = new SqlCommand(Insert into Codedetails values('TF','@productcode','@productname','@brandcode','@brandname'), con)) 
          {  
         command.Parameters.Add(new SqlParameter("productcode", txt_productcode.Text)); 
         command.Parameters.Add(new SqlParameter("productname", txt_productcode.Text)); 
         command.Parameters.Add(new SqlParameter("brandcode", txt_brandcode.Text)); 
         command.Parameters.Add(new SqlParameter("brandname", txt_brandname.Text)); 
         command.ExecuteNonQuery(); 
         } 
        } 
    
    +0

    嗨Hassan Boutougha,謝謝你回覆我...我的數據保存得很好,我的問題是我在應用程序中添加了數據庫,如果我關閉應用程序,所有數據都被刪除,我希望數據應該出席 –

    1

    存儲過程如果在執行的代碼,然後將數據保存成功爲您河畔還沒有收到一個錯誤即因爲如果你的數據沒有成功COMMITED那麼你肯定會收到一個錯誤。發生了什麼事情是這樣的(它也發生在我身上):如果你正在運行一個用於ex VS的IDE,那麼每次編譯& Release就會發生很多次,所以新發布的文件包括SQL DB文件好。每次發佈時,都會發佈一個新的數據庫副本,重新寫入對舊文件所做的任何更改。

    當您在數據庫連接資源管理器中看到時,您將看到表格的副本。這個精確的表格及其所有內容是每次發佈的內容。

    如果要保存更改,請執行以下操作:在發佈新編譯的文件之前,在其他位置創建MDF & LOG文件的副本。然後點擊發布。您將看到沒有數據庫更改的舊錶。 THEN關閉應用程序。然後進入發佈目錄。現在粘貼MDF & LOG文件&替換它們的課程。最後點擊該文件夾中的EXE。不要單擊再次釋放,否則您的文件將被重新替換。

    相關問題