3

この質問を間違ったフォーラムに投稿している場合は申し訳ありません。Stackoverflowに投稿するのはこれが初めてです。また、ASP.NETとC#を自分で学んでいるので、この初級の場合はご容赦ください。

VisualStudio2010を使用してASP.NET4.0C#でクラスファイルを作成しました。コードは次のようになります。

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という名前のデータベーステーブルがあり、IdとEmailの2つのフィールドがあり、Idは自動インクリメントとEmail Varchar(50)を使用しています。

また、このテーブルに基づいて、電子メールアドレスを入力するためのストアドプロシージャを作成しました。

私が混乱しているのは、データをデータベースに保存できるように、この情報をクラスファイルに追加するにはどうすればよいですか。

また、Join-Mailing-List.aspxというWebフォームを作成し、tbEmailというテキストボックスとJoinという送信ボタンを使用しました。

私がしようとしているのは、誰かがテキストボックスに電子メールアドレスを入力したときに、テキストボックスの値をクラスファイルの文字列EmailListに渡して、データをデータベースに保存したいということです。

テキストボックスの値をクラスファイルに渡す方法を知っています。aspxページのDBコードを使用せずに情報をDBに保存する方法がわかりません

アドバイスや例をありがとう、本当に感謝します

4

4 に答える 4

3

C#を使用してデータベースに情報を保存するには、さまざまな方法があります。より一般的なもののいくつか:

あなたはおそらくあなたに最適なものを見つけるためにそれらを読む必要があるでしょう。すばやく簡単なものが必要な場合は、おそらくADO.NETを使用しますが、他の人は同意しない場合があります。

クラスに更新のコードを含める方法については、Update()またはSave()関数を追加するだけです。

于 2012-07-05T20:57:12.200 に答える
1

データベースに保存する方法はいくつかあります

ここに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();

一部の学派はそれに眉をひそめています。

もう1つは、それを行うための特別なクラスを作成することです

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

次に、この情報をデータベースに取得するための多くのオプションがあります。始めたばかりの場合は、単純な古い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(Entity Framework、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 に答える