2012-07-05 123 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

相关问题