3

对不起,如果我在错误的论坛上发布了这个问题。这是我第一次在 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 的提交按钮。

我想要的是当有人在文本框中输入电子邮件地址时,我想将文本框值传递给我的类文件中的字符串 EmailList 并将数据保存到数据库中。

我知道如何将文本框值传递给我的类文件。我只是不知道如何在不使用 aspx 页面中的数据库代码的情况下将信息保存到数据库

感谢并非常感谢您提供任何建议或示例

4

4 回答 4

3

使用 C# 将信息保存到数据库有多种不同的方法。一些比较常见的:

您可能需要阅读这些内容才能找到最适合您的内容。如果您想要快速且相对简单的东西,我可能会选择 ADO.NET,但其他人可能不同意。

至于如何在你的类中包含更新代码,你可以添加一个Update()orSave()函数。

于 2012-07-05T20:57:12.200 回答
1

有几种方法可以保存到数据库中

这是一个:(我认为更简单)

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#
于 2012-07-05T21:16:32.210 回答
0

为了清楚起见,您可以稍微简化您的课程:

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

然后,您有很多选项可以将此信息发送到您的数据库。如果您刚刚开始,我认为plain ol' 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)

于 2012-07-05T20:54:21.203 回答
0

我建议使用实体数据模型。这是最快、最简单的方法,也是“最佳实践”。您应该开始阅读本教程:

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();
}
于 2012-07-05T21:02:34.467 回答