2012-07-05 26 views
3

對不起,如果我在錯誤的論壇中發佈此問題。這是我第一次發佈在Stackoverflow上。另外,我自己也在學習ASP.NET和C#,所以如果這個基礎的話,請原諒我。使用C#中的類將數據保存到SQL DB中

我一直在使用Visual Studio 2010中我的代碼是創建在ASP.NET 4.0 C#類文件中像下面

namespace My.Customers 
{ 
    public class EmailMailingList 
    { 
     #region members 

     private string _emailList; 

     #endregion 

     #region properties 

     /// <summary> 
     /// gets or sets Customer Email for Mailing List 
     /// </summary> 
     public string EmailList 
     { 
      get { return _emailList; } 
      set { _emailList = value; } 
     } 

     #endregion 
    } 
} 

我有2個字段,即ID和郵箱名爲郵件列表SQL 2008數據庫表其中Id是帶有自動增量和Email Varchar(50)的int。

我還根據此表創建了一個存儲過程以輸入電子郵件地址。

我感到困惑的是如何將這些信息添加到我的類文件中,以便將數據保存到數據庫中。

我還創建了一個名爲Join-Mailing-List.aspx的Web表單,其中包含一個名爲tbEmail的文本框和一個名爲Join的Submit按鈕。

我想要的是當有人在文本框中輸入電子郵件地址我想將文本框的值傳遞到我的類文件中的字符串EmailList並將數據保存到數據庫。

我知道如何將文本框的值傳遞給我的類文件。我只是不知道如何保存信息的數據庫,而不使用在aspx頁面

感謝DB代碼,非常感謝您的任何意見或例子

+0

什麼是「aspx頁面中的DB代碼E「? – Patrick 2012-07-05 20:50:13

+2

您的問題的谷歌搜索返回許多很好的解決方案。你甚至看過? – Tyrsius 2012-07-05 20:51:05

+0

爲什麼你不想在aspx頁面中使用代碼?我很確定你需要將代碼放在某個地方。您所描述的內容似乎可能沿着實體框架的方向發展。但是我會通過研究Linq開始。 – Dave 2012-07-05 20:53:35

回答

3

有許多不同的使用C#將信息保存到數據庫的方法。一些較常見的:

你可能需要閱讀了關於那些爲您找到最好的一個。如果你想快速且相對容易的東西,我可能會使用ADO.NET,但其他人可能會不同意。

至於如何在您的課程中包含更新代碼,您可以添加Update()Save()函數。

0

您可以簡化您的類有點爲清楚:

public class EmailMailingList 
{ 
    public string EmailList { get; set; } 
} 

然後你有很多選項可以獲取這個信息到你的分貝。如果你剛開始,我認爲普通的'ADO.Net是習慣於事物的可選擇的選擇。喜歡的東西:

// A method in your code-behind: 
public void Save(EmailMailingList list) 
{ 
    using(var connection = new SqlConnection("your connection string")) 
    { 
     var command = connection.CreateCommand(); 
     command.CommandText = "name of your stored procedure"; 
     command.CommandType = CommandType.StoredProcedure; 
     command.Parameters.Add(new SqlParameter(...)); 
     command.ExecuteNonQuery(); 
    } 
} 

當然,最終你會想看看提供給您的.NET世界中強大的ORM(實體框架,NHibernate的,LinqToSql)

+0

您應該按照OP的建議重新修改示例以使用存儲過程。另外,避免使用'var'。此外,將該命令包含在「使用」語句中... – 2012-07-05 20:57:25

+0

避免使用'var'? – Didaxis 2012-07-05 20:57:46

+0

「過度使用var可能會使源代碼對其他人無法讀取,建議僅在必要時使用var,也就是說,該變量將用於存儲匿名類型或匿名類型集合。」 - http://msdn.microsoft.com/en-us/library/bb383973.aspx – 2012-07-05 20:59:00

0

我會推薦使用實體數據模型。這是最快,最簡單的方法,這是一個「最佳做法。「你應該開始BU通過本教程走:

http://www.asp.net/web-forms/tutorials/getting-started-with-ef/the-entity-framework-and-aspnet-getting-started-part-1

一旦你有你的數據模型設置使用嚮導的話,那是非常快和簡單的從代碼側的形式保存您的數據:

dataModel.dataEntities de; 
dataModel.dataTable tbl; 

protected void Page_Load(object sender, EventArgs e) 
{ 

} 
protected void btnSubmit_Click(object sender, EventArgs e) 
{ 
    //Create new entity object and table object 
    de = new dataModel.dataEntities(); 
    de.Connection.Open(); 

    tbl = new dataModel.DataEntities(); 

    tbl.Field1 = ((TextBox)tbField1).Text.ToString(); ; 
    tbl.Field2 = ((TextBox)tbField2).Text.ToString(); ; 

    //Insert the row and save the change to the table 
    de.AddToDataTable(tbl); 
    de.SaveChanges(); 

    de.Connection.Close(); 
} 
0

有幾種方法,你可以接近保存到數據庫

這裏是一個:(簡單的在我看來)

public class EmailMailingList 
{ 

    private string _emailList; 

    public string EmailList 
    { 
     get { return _emailList; } 
     set { _emailList = value; } 
    } 

    #endregion 

    public void Save() 
    { 
     //Insert (this.EmailList); to database 
    } 
} 

//Use: 
EmailMailingList ml = new EmailMailingList(); 
ml.EmailList = "blah"; 
ml.Save(); 

一些學派的思想不滿。

另一種是創建一個特殊的類來做到這一點

public class MailingListSaver 
{ 
    public static void Save(EmailMailingList ml) 
    { 
     //insert (ml.EmailList) into database 
    } 
} 

//Use: 
EmailMailingList ml = new EmailMailingList(); 
ml.EmailList = "blah"; 
MailingListSaver.Save(ml); 

查找到(谷歌)

  • 活動記錄模式
  • 庫模式
  • 的N層應用C#
+0

哇我會嘗試消化這些非常好的建議,並會發布我的最終解決方案。正如ExOx提到的,我對在aspx頁面中使用sql命令代碼不感興趣。 – niceoneishere 2012-07-05 22:31:53

相關問題