簡體   English   中英

使用C#中的類將數據保存到SQL DB

[英]Save data to SQL DB using a class in C#

對不起,如果我在錯誤的論壇中發布此問題。 這是我第一次在Stackoverflow上發帖。 而且我自己也在學習ASP.NET和C#,所以請原諒我這個小學。

我使用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
    }
}

我在SQL 2008中有一個名為MailingList的數據庫表,其中包含2個字段,即Id和Email,其中Id為int,具有自動增量和Email Varchar(50)。

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

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

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

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

我知道如何將文本框值傳遞給我的類文件。 我只是不知道如何在不使用aspx頁面中的數據庫代碼的情況下將信息保存到數據庫

感謝並非常感謝任何建議或示例

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

您可能需要閱讀那些以找到最適合您的。 如果你想要快速和相對容易的東西,我可能會選擇ADO.NET,但其他人可能不同意。

至於如何在類中包含更新代碼,您只需添加Update()Save()函數即可。

有幾種方法可以保存到數據庫中

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

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#

為清晰起見,您可以稍微簡化一下課程:

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)

我建議使用實體數據模型。 這是最快捷,最簡單的方式,也是“最佳實踐”。 您應該開始閱讀本教程:

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();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM