2016-08-26 9 views
0

私はC#の初心者です。ユーザーがデータをフィールドに入力させ、データを送信してデータベースに書き込むようにします。私は本当にどんな助けにも感謝しています。C#とASP.NETを使用したデータの書き込みとSQL Serverデータベースへの保存

これまで私がこれまで持っていたことは次のとおりです。

私のマークアップ:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Registration.aspx.cs" Inherits="subscribe_Registration" %> 

<!DOCTYPE html> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
<title>Your Earth, Your Home.</title> 
<link rel="stylesheet" type="text/css" href="../StyleSheet.css" /> 
</head> 
<body> 
<form id="form1" runat="server"> 
<div class="container"> 
    <header> 
     <img src="../logo.jpg" height="200" /> 
    </header> 
     <nav> 
     <ul> 
      <li><a href="Default.aspx">Home</a></li> 
      <li><a href="about-us.aspx">About Us</a></li> 
      <li><a href="gallery.aspx">Image Gallery</a></li> 
      <li><a href="http://your-earth-yourhome.blogspot.com.au/">Blog</a></li> 
      <li><a href="subscribe/registration.aspx">Subscribe</a></li> 
      <li><a href="calendar.aspx">Calendar</a></li> 
      <li><a href="donate.aspx">Donate</a></li> 
      <li><a href="shop.aspx">Shop</a></li> 
     </ul> 
    </nav> 
    <section> 
     <h1>Subscribe</h1> 
     <div class="div1"> 
      <br /> 
      &nbsp;&nbsp;&nbsp; 
      Name: 
      <br /> 
      &nbsp;&nbsp;&nbsp; 
      <asp:TextBox ID="txtName" runat="server" Width="200" Height="20"></asp:TextBox> 
      <br /> 
      <br /> 
      &nbsp;&nbsp;&nbsp; 
      Age:<br /> 
      &nbsp;&nbsp;&nbsp; 
      <asp:TextBox ID="txtAge" runat="server" Width="200" Height="20">  </asp:TextBox> 
      <br /> 
      <br /> 
      &nbsp;&nbsp;&nbsp; 
      Sex:<br /> 
      &nbsp;&nbsp;&nbsp; 
      <asp:TextBox ID="txtSex" runat="server" Width="200" Height="20"></asp:TextBox> 
      <br /> 
      <br /> 
     </div> 
     <div class="div2"> 
      &nbsp;&nbsp;&nbsp; 
      Address:<br /> 
      &nbsp;&nbsp;&nbsp; 
      <asp:TextBox ID="txtAddress" runat="server" Width="200" Height="20"></asp:TextBox> 
      <br /> 
      <br /> 
      &nbsp;&nbsp;&nbsp; 
      Email Address:<br /> 
      &nbsp;&nbsp;&nbsp; 
      <asp:TextBox ID="txtEmail" runat="server" Width="200" Height="20"></asp:TextBox> 
      <br /> 
      <br /> 
      &nbsp;&nbsp;&nbsp; 
      Phone Number:<br /> 
      &nbsp;&nbsp;&nbsp; 
      <asp:TextBox ID="txtPhone" runat="server" Width="200" Height="20"></asp:TextBox> 
      <br /> 
      <br /> 
      &nbsp;&nbsp;&nbsp; 
      <asp:Button ID="Button1" runat="server" Text="Subscribe" Width="200" Height="30" OnClick="Button1_Click" /> 
      <asp:PlaceHolder ID="phSuccess" runat="server" Visible="false"> 
       <div id="success"> 
        <p>Thank you for your registration!</p> 
       </div> 
      </asp:PlaceHolder> 
    </section> 
    <aside> 
     <div class="links"> 
      <h3>Here are our affiliates:</h3> 
      <ul> 
       <li><a href="#">http://www.earthhour.org</a></li> 
       <li><a href="#">http://www.50waystohelp.com</a></li> 
       <li><a href="#">http://www.greenpeace.org</a></li> 
       <li><a href="#">http://www.wwf.org.au/</a></li> 
      </ul> 
     </div> 
    </aside> 
    <footer>&copy; Copyright Your Earth, Your Home. All Rights Reserved</footer> 
</div> 
</form> 
</body> 
</html> 

私のC#のコード

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Data.SqlClient; 
using System.Configuration; 
using System.Data; 

public partial class subscribe_Registration : System.Web.UI.Page 
{ 
    protected void Button1_Click(object sender, EventArgs e) 
    { 
     Registration.Registration reg = new Registration.Registration(); 
     reg.Name = txtName.Text; 
     reg.Age = Int32.Parse(txtAge.Text); 
     reg.Sex = txtSex.Text; 
     reg.Address = txtAddress.Text; 
     reg.Email = txtEmail.Text; 
     reg.Phone = Int32.Parse(txtPhone.Text); 

     phSuccess.Visible = true; 
    } 

    public void InsertRegistration() 
    { 
     SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["Database"].ConnectionString); 

     SqlCommand cmd = new SqlCommand("dbo.Procedure", conn); 
     cmd.CommandType = CommandType.StoredProcedure; 

     SqlParameter parameterName = new SqlParameter("@Name", SqlDbType.VarChar, 50); 
     SqlParameter parameterAge = new SqlParameter("@Age", SqlDbType.VarChar, 50); 
     SqlParameter parameterSex = new SqlParameter("@Sex", SqlDbType.VarChar, 50); 
     SqlParameter parameterAddress = new SqlParameter("@Address", SqlDbType.VarChar, 50); 
     SqlParameter parameterEmail = new SqlParameter("@Email", SqlDbType.VarChar, 100); 
     SqlParameter parameterPhone = new SqlParameter("@Phone", SqlDbType.VarChar, 100); 

     parameterName.Value = txtName; 
     parameterAge.Value = txtAge; 
     parameterEmail.Value = txtSex; 
     parameterAddress.Value = txtAddress; 
     parameterEmail.Value = txtEmail; 
     parameterPhone.Value = txtPhone; 

     cmd.Parameters.Add(parameterName); 
     cmd.Parameters.Add(parameterAge); 
     cmd.Parameters.Add(parameterSex); 
     cmd.Parameters.Add(parameterAddress); 
     cmd.Parameters.Add(parameterEmail); 
     cmd.Parameters.Add(parameterPhone); 

     try 
     { 
      conn.Open(); 
      cmd.ExecuteNonQuery(); 
     } 
     catch (Exception ex) 
     { 
      throw new Exception(ex.ToString()); 
     } 
     finally 
     { 
      cmd.Dispose(); 
      conn.Close(); 
     } 
    } 
} 

私もクラスを持っている:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Data; 
using System.Configuration; 
using System.Data.SqlClient; 

namespace Registration 
{ 
    public class Registration 
    { 
     public string Name { get; set; } 
     public int Age { get; set; } 
     public string Sex { get; set; } 
     public string Address { get; set; } 
     public string Email { get; set; } 
     public int Phone { get; set; } 
    } 
} 

私は本当に私がどこまで正確にわからないんだけどこだわっここから行く。私はユーザーのデータをデータベースに保存したい。何が最善の方法か、どこから始めるかは不明です。あなたが少なくとも正しい方向に私を指すことができるなら、どんな助けも大いに感謝されるでしょう。

ありがとうございます。

+0

あなたは何にこだわっていますか?データベースに挿入するコードはどこから呼び出されますか?このイベントのコードが表示されます.. 'Button1_Click'デバッガの使い方を知っていますか?もしあなたのコードにいくつかのブレークポイントを入れて、コードをステップ実行し、変数などを評価し始めてください。 – MethodMan

+0

** Button1_Click **でコードを呼びたいと思います。ストアドプロシージャを作成する最善の方法ですか?私は割り当てを終えることを試みているatmをプログラミングすることに非常に新しいです。編集:申し訳ありませんあなたの全体のコメントを読んで、病気デバッガを使用してみてくださいが、私はちょうどデータベースにデータを保存するのが好きにする方法のヒントが必要です。 – user6725507

+0

すべて正常に動作していますどこからここに行き、どこに行くのかわからない – user6725507

答えて

1

1.Createユーザデータを格納するためのSQLでUsersテーブルと、このテーブルに挿入するストアドプロシージャ:

CREATE PROCEDURE [dbo].[Procedure] 
@Name VARCHAR(50), 
@Age VARCHAR(50), 
@Sex VARCHAR(50), 
@Address VARCHAR(50), 
@Email VARCHAR(100), 
@Phone VARCHAR(100) 
AS 
BEGIN 
    SET NOCOUNT ON; 

    INSERT INTO Users(Name,Age,Sex,[Address],Email,Phone) 
    VALUES(@Name,@Age,@Sex,@Address,@Email,@Phone) 
END 
GO 

2.Changeこのようなファイルの背後にあるコード:

protected void Button1_Click(object sender, EventArgs e) 
    { 
     var reg = new Registration.Registration 
     { 
      Name = txtName.Text, 
      Age = Int32.Parse(txtAge.Text), 
      Sex = txtSex.Text, 
      Address = txtAddress.Text, 
      Email = txtEmail.Text, 
      Phone = Int32.Parse(txtPhone.Text) 
     }; 

     this.InsertRegistration(reg); 
     phSuccess.Visible = true; 
    } 

    public void InsertRegistration(Registration.Registration reg) 
    { 
     try 
     { 
      using (var conn = new SqlConnection(ConfigurationManager.ConnectionStrings["Database"].ConnectionString)) 
      { 
       using (var cmd = new SqlCommand("dbo.Procedure", conn)) 
       { 
        cmd.CommandType = CommandType.StoredProcedure; 

        var parameterName = new SqlParameter("@Name", SqlDbType.VarChar, 50); 
        var parameterAge = new SqlParameter("@Age", SqlDbType.VarChar, 50); 
        var parameterSex = new SqlParameter("@Sex", SqlDbType.VarChar, 50); 
        var parameterAddress = new SqlParameter("@Address", SqlDbType.VarChar, 50); 
        var parameterEmail = new SqlParameter("@Email", SqlDbType.VarChar, 100); 
        var parameterPhone = new SqlParameter("@Phone", SqlDbType.VarChar, 100); 

        parameterName.Value = reg.Sex; 
        parameterAge.Value = reg.Age; 
        parameterSex.Value = reg.Email; 
        parameterAddress.Value = reg.Address; 
        parameterEmail.Value = reg.Email; 
        parameterPhone.Value = reg.Phone; 

        cmd.Parameters.Add(parameterName); 
        cmd.Parameters.Add(parameterAge); 
        cmd.Parameters.Add(parameterSex); 
        cmd.Parameters.Add(parameterAddress); 
        cmd.Parameters.Add(parameterEmail); 
        cmd.Parameters.Add(parameterPhone); 

        conn.Open(); 
        cmd.ExecuteNonQuery(); 
        conn.Close(); 
       } 
      } 
     } 
     catch (Exception ex) 
     { 
      throw ex; 
     } 
    } 
+0

ありがとうDenys、あなたの助けが大いにありがとう:) – user6725507

+0

Imのコードでエラーが発生しました "タイプまたは名前空間の名前 '登録'を見つけることができませんでした – user6725507

+0

したがって、正しい'登録クラスがどこにあるのか知っています –

1

.csコードでブレークポイントを使用する必要があります。この種のプログラムで最もよくある間違いは、データベースまたは.csファイルのフィールドの名前がわずかに異なることです。そのサーバーのb'cozは、データベースの各フィールドの値を取得しませんでした。これによりエラーが発生します。

ブレークポイントを適切に使用し、プログラムをデバッグするためにデバッガを使用すると、どのポイントuにエラーがあるのか​​がわかります。

関連する問題