2011-12-25 7 views
2

私は簡単なオンライン提案アプリケーションを開発しています。ここでユーザーはフォームに記入してシステムに直接提出することができます。システムはこの提案を電子メールで管理者に送信します。私はContact Usページのフォームのようにそれを開発しました。さて、私は、電子メールで提案を送信するだけでなく、提案をデータベースに保存して、すべての提案を1ページに一覧表示することを望みます。データベースに管理者に送信される提案を保存する方法は?

SuggestionLog表: は、私は、データベース内の次の表作成ID、タイトル、説明、ユーザー名を

(IDが主キーであるとユーザー名ユーザーのテーブルへの外部キーです)

私のASP.NETコードは次のとおりです。

<div ID="contactform"> 
       <ol> 
        <li> 
         <label for="subject"> 
         Subject</label> 
         <asp:TextBox ID="txtSubject" runat="server" CssClass="text"></asp:TextBox> 
         <br /> 
         <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" 
          ControlToValidate="txtSubject" 
          ErrorMessage="Please enter a subject/title for your suggestion"></asp:RequiredFieldValidator> 
        </li> 
        <li> 
         <label for="message"> 
         Your Suggestion</label> 
         <asp:TextBox ID="txtSuggestion" runat="server" cols="50" CssClass="textarea" 
          rows="6" TextMode="MultiLine"></asp:TextBox> 
         <br /> 
         <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" 
          ControlToValidate="txtSuggestion" ErrorMessage="Please enter your suggestion"></asp:RequiredFieldValidator> 
        </li> 
        <li class="buttons"> 
         <asp:ImageButton ID="imageField" runat="server" imageurl="images/Send.gif" 
          OnClick="btnSubmit_Click" /> 

        </li> 
       </ol> 
      </div> 

と私のコードビハインドは次のとおりです。

protected void btnSubmit_Click(object sender, ImageClickEventArgs e) 
    { 
     SmtpClient sc = new SmtpClient("MAIL ADDRESS"); 
     StringBuilder sb = new StringBuilder(); 
     MailMessage msg = null; 


     sb.Append("Message : " + txtSuggestion.Text + "\n"); 

     try 
     { 
      msg = new MailMessage("", 
       "[email protected]", "Message from PSSP System", 
       sb.ToString()); 

      sc.Send(msg); 
      MultiView1.SetActiveView(ViewConfirm); 
     } 
     catch (Exception ex) 
     { 
      throw ex; 

     } 
     finally 
     { 

      if (msg != null) 
      { 
       msg.Dispose(); 
      } 

     } 
    } 

ここで、ユーザーが[送信]ボタンをクリックしたときに管理者に送信されると同時に、データベースに提案を保存するにはどうすればよいですか?

+0

どのデータベースを使用していますか... SQL Server、MySQLなど...? – Aaron

+0

SQLServerを使用しています – user1093651

答えて

1

まず、コードビハインドは、フロントエンド(ビュー)の構築に専念する必要があります。電子メールやデータベースINSERTの作成/送信には問題はありません。実際にそれを処理する別の層(コントローラー)を作成する必要があります。

とにかく、データベースを更新するには(ここではSQL Serverと仮定します)、接続オブジェクトを作成する関数にタイトル、desc、およびユーザー名を渡す必要があります。次に、それを開いたり、INSERT SQLでコマンドオブジェクトを作成したり、パラメータを追加したり、EXECUTEしたりします。私はあなたのIDフィールドはオートナンバー型になることを仮定しているので、DBは、あなたのための値を生成するため

using System.Data.SqlClient; 
.... 
    SqlConnection objConn = new SqlConnection("Data Source=MYDBSERVER,3306;User ID=kingRoland;Password=12345;Initial Catalog=suggestionDB"); 
    objConn.Open(); 
    SqlCommand objCMD = new SqlCommand(); 
    objCMD.Connection = objConn; 
    objCMD.CommandText = "INSERT INTO SuggestionLog (Title,Description,Username) VALUES(@title, @desc, @user)"; 
    objCMD.Parameters.Clear(); 
    objCMD.Parameters.AddWithValue("title",strTitle); 
    objCMD.Parameters.AddWithValue("desc",strDesc); 
    objCMD.Parameters.AddWithValue("user",strUser); 

    try 
    { 
     objCMD.ExecuteNonQuery(); 
    } 
    catch (SqlException e) 
    { 
     writeToLog(e.InnerException.ToString()); 
    } 
    objConn.Close(); 

IDが省略されている:それはこのような何かを見てみましょう。そうでない場合は、それを一緒に渡す必要があります。また、このコードでは、 "writeToLog"によって参照されるカスタムエラーログ機能を想定しています。

また、関数にハードコードされていないweb.configからSQL接続情報を取得する必要があります。

+0

どこにコードを記述すればよいですか?私はそれをclick_buttonメソッドの中に入れますか? – user1093651

+0

はい、これを関数に入れ、btnSubmit_Clickから呼び出すことになります。 – Aaron

+0

ありがとうございます。ほんとうにありがとう。 – user1093651

関連する問題