简体   繁体   English

使用C#和ASP.NET写入数据并将其保存到SQL Server数据库

[英]Writing data and saving to a SQL Server database using C# and ASP.NET

I'm pretty new to C#, what I want to do is have the user enter data into fields and when they hit submit it writes to a database. 我对C#还是很陌生,我想做的是让用户在字段中输入数据,然后当他们点击提交时,它将数据写入数据库。 I'm really stuck any help would be much appreciated. 我真的被困住了,将不胜感激。

Here is what I have so far. 这是我到目前为止所拥有的。

My markup: 我的标记:

<%@ 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>

My c# code 我的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();
        }
    }
}

I also have a class: 我也有一堂课:

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

I'm really stuck I'm not exactly sure where to go from here. 我真的被卡住了,我不确定从这儿去哪里。 I want to save the user data into a database. 我想将用户数据保存到数据库中。 Not sure whats the best way or where to start. 不知道什么是最好的方法或从哪里开始。 If you could at least point me in the right direction any help would be much appreciated. 如果您至少可以向我指出正确的方向,将不胜感激。

Thanks in advance :) 提前致谢 :)

you should use breakpoints in your .cs code. 您应该在.cs代码中使用断点。 most common mistake in this kind of program is that name of the field in database or .cs file are slightly different, b'coz of that server did not get the value for every field in your database. 这种程序中最常见的错误是数据库或.cs文件中字段的名称略有不同,该服务器的b'coz并未获得数据库中每个字段的值。 this gives an error. 这给出了一个错误。

So proper use of breakpoints and use debugger to debugg your program, so that u found at which point u got an error. 因此,请正确使用断点并使用调试器调试程序,以便于您发现在那一点上出错。

1.Create a Users table in SQL for storing user data and a stored procedure to insert into this table: 1.在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 the code behind file like this: 2.更改文件后面的代码,如下所示:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM