2014-10-12 105 views
0

使用我的注册是工作完全正常,但因为我已经做了多次修改,所以我无法找出造成这个问题...注册插入MS Access数据库多次

当我输入详细信息并单击注册,页面需要很长时间才能使用asp.net本地服务器进行处理。然后,它最后说我已经注册,但已进入10-30项到数据库中(有的甚至不相同的,不同领域的缺失等)

我可以清除所有在数据库中创建的条目,然后重新 - 打开它,它已经添加了10-30多个...它将继续这样做,直到我杀死它在“无需调试就开始”时创建的asp.net开发服务器。

下面是页面C#文件:

using System; 
using System.Text; 
using System.Data; 
using System.Data.OleDb; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Net; 
using System.Net.Mail; 

public partial class Register : System.Web.UI.Page 
{ 

    protected void Page_Load(object sender, EventArgs e) 
    { 
     if (this.IsPostBack) 
     { 
      //Display welcome message 
      lblMessage.Text = "Welcome " + txtFirstName.Text + "!"; 

      //Save the registration data into database, 17/8/2014 
      SaveRegistration(); 
      sendEmail(); 
     } 
    } 

    private void SaveRegistration() 
    { 
     OleDbConnectionStringBuilder sb = new OleDbConnectionStringBuilder(); 
     sb.Provider = "Microsoft.ACE.OLEDB.12.0"; 
     //sb.DataSource = Server.MapPath("/carpec02/asp_assignment/App_Data/shoeDB.accdb"); 
     sb.DataSource = Server.MapPath("~/App_Data/shoeDB.accdb"); 

     OleDbConnection myConnection = new OleDbConnection(sb.ConnectionString); 
     string queryString = ""; 
     OleDbCommand myCmd = new OleDbCommand(queryString, myConnection); 

     //Open connection 
     myConnection.Open(); 

     //Build the query string 
     StringBuilder queryStringBuilder = new StringBuilder("Insert into customer([customerFirstName], [customerLastName], [customerPassword], [customerPhHome], [customerPhWork], [customerPhMobile], [customerEmail], [customerPrivilege], [customerUsername])"); 

     queryStringBuilder.Append("values ('"); 
     queryStringBuilder.Append(txtFirstName.Text); 
     queryStringBuilder.Append("','"); 
     queryStringBuilder.Append(txtLastName.Text); 
     queryStringBuilder.Append("','"); 
     queryStringBuilder.Append(txtPassword.Text); 
     queryStringBuilder.Append("','"); 
     queryStringBuilder.Append(txtPhHome.Text); 
     queryStringBuilder.Append("','"); 
     queryStringBuilder.Append(txtPhWork.Text); 
     queryStringBuilder.Append("','"); 
     queryStringBuilder.Append(txtPhMobile.Text); 
     queryStringBuilder.Append("','"); 
     queryStringBuilder.Append(txtEmail.Text); 
     queryStringBuilder.Append("','"); 
     queryStringBuilder.Append("User"); 
     queryStringBuilder.Append("','"); 
     queryStringBuilder.Append(txtUsername.Text); 
     queryStringBuilder.Append("')"); 

     queryString = queryStringBuilder.ToString(); 

     //Assign the QueryString to the command object 
     myCmd.CommandText = queryString; 

     //Execute the query 
     myCmd.ExecuteNonQuery(); 

     //Create another command object to display the inserted record ID 
     OleDbCommand anotherCmd = new OleDbCommand("SELECT @@IDENTITY", myConnection); 
     int numId = Convert.ToInt32(anotherCmd.ExecuteScalar()); 

     lblDataId.Text = "<h3>Your registration number is <big>" + numId.ToString() + "</big></h3>"; 

     //Close the connection 
     myConnection.Close(); 

    } 

    //Modified from http://www.aspsnippets.com/Articles/How-to-create-Contact-Us-Page-in-ASPNet.aspx 
    protected void sendEmail() 
    { 
     try 
     { 
      string strReceiver = txtEmail.Text; 
      MailMessage mm = new MailMessage("[email protected]", strReceiver); //Sender/receiver 
      mm.Subject = "Welcome to Awesome Shoes!"; 
      mm.Body = "Thank you, " + txtFirstName.Text + " " + txtLastName.Text + ", for registering at Awesome Shoes. Your username is: " + txtUsername + " and your password is " + txtPassword; 
      mm.IsBodyHtml = true; 
      SmtpClient smtp = new SmtpClient(); 
      smtp.Host = "smtp.gmail.com"; 
      smtp.EnableSsl = true; 
      System.Net.NetworkCredential NetworkCred = new System.Net.NetworkCredential(); 
      NetworkCred.UserName = "[email protected]"; 
      NetworkCred.Password = "fake123"; 
      smtp.UseDefaultCredentials = true; 
      smtp.Credentials = NetworkCred; 
      smtp.Port = 587; 
      smtp.Send(mm); 
      lblMessage2.Text = "Email Sent Sucessfully."; 
     } 
     catch 
     { 

     } 
    } 
} 

,这里是页面的asp.net代码:

<%@ Page Title="" Language="C#" MasterPageFile="~/AwesomeShoes.master" AutoEventWireup="true" CodeFile="Register.aspx.cs" Inherits="Register" %> 
<asp:Content ID="Content1" ContentPlaceHolderID="TabTitle" Runat="Server"> 
Register - Awesome Shoes 
</asp:Content> 
<asp:Content ID="Content2" ContentPlaceHolderID="Head" Runat="Server"> 
</asp:Content> 
<asp:Content ID="Content4" ContentPlaceHolderID="CurrentTabRegister" Runat="Server"> 
class="currentTab" 
</asp:Content> 
<asp:Content ID="Content3" ContentPlaceHolderID="MainTitle" Runat="Server"> 
Register 
</asp:Content> 
<asp:Content ID="Content5" ContentPlaceHolderID="MainBody" Runat="Server"> 
<script type="text/javascript"> 
    function IsInteger(input) { 
     var regEx = /^\+{0,1}\d+\d*$/; 
     return regEx.test(input); 
    } 

    function btnRegister_OnClick() 
    { 
     var txtFirstName = document.getElementById('MainBody_txtFirstName'); 

     if (txtFirstName.value.length == 0) 
     { 
      alert("You must enter all the required information before submitting"); 
      return; 
     } 

     var txtEmail = document.getElementById('MainBody_txtEmail'); 
     if (txtEmail.value.indexOf('@') == -1) 
     { 
      alert("You must enter an @ for your email address."); 
      return; 
     } 

     var txtPassword = document.getElementById('MainBody_txtPassword'); 
     if (txtPassword.value.length < 6) { 
      alert("Your password must be at least 6 characters long"); 
      return; 
     } 

     var txtRepeatPassword = document.getElementById('MainBody_txtRepeatPassword'); 
     if (txtRepeatPassword.value != txtPassword.value) { 
      alert("Your password does not match"); 
      return; 
     } 

     var txtPhHome = document.getElementById('MainBody_txtPhHome'); 
     var txtPhWork = document.getElementById('MainBody_txtPhWork'); 
     var txtPhMobile = document.getElementById('MainBody_txtPhMobile'); 

     if ((!IsInteger(txtPhHome.value)) && (!IsInteger(txtPhWork.value)) && (!IsInteger(txtPhMobile.value))) 
     { 
      alert('You must enter at least one phone number.'); 
      return; 
     } 

     if (IsInteger(txtPhHome.value)) 
     { 
      if (txtPhHome.value < 1000000 || txtPhHome.value > 9999999) { 
       alert('The home phone number you entered is invalid. It must be between 100-0000 and 999-9999'); 
       return; 
      } 
     } 

     if (IsInteger(txtPhWork.value)) { 
      if (txtPhWork.value < 1000000 || txtPhWork.value > 9999999) { 
       alert('The work phone number you entered is invalid. It must be between 100-0000 and 999-9999'); 
       return; 
      } 
     } 

     if (IsInteger(txtPhMobile.value)) { 
      if (txtPhMobile.value < 0210000000 || txtPhMobile.value > 0299999999) { 
       alert('The mobile phone number you entered is invalid. It must be between 021-000-0000 and 029-999-9999'); 
       return; 
      } 
     } 

     document.getElementById('form1').submit(); 
    } 
</script> 
<div> 
    <table> 
    <tr><td>First Name:</td><td><asp:TextBox ID="txtFirstName" Width="150" runat="server"></asp:TextBox></td></tr> 
    <tr><td>last Name:</td><td><asp:TextBox ID="txtLastName" Width="150" runat="server"></asp:TextBox></td></tr> 
    <tr><td>Username:</td><td><asp:TextBox ID="txtUsername" Width="150" runat="server"></asp:TextBox></td></tr> 
    <tr><td>Password:</td><td><asp:TextBox ID="txtPassword" Width="150" runat="server"></asp:TextBox></td></tr> 
    <tr><td>Repeat Password:</td><td><asp:TextBox ID="txtRepeatPassword" Width="150" runat="server"></asp:TextBox></td></tr> 
    <tr><td>Email:</td><td><asp:TextBox ID="txtEmail" Width="150" runat="server"></asp:TextBox></td></tr> 
    <tr><td>Home Phone:</td><td><asp:TextBox ID="txtPhHome" Width="150" runat="server"></asp:TextBox></td></tr> 
    <tr><td>Work Phone:</td><td><asp:TextBox ID="txtPhWork" Width="150" runat="server"></asp:TextBox></td></tr> 
    <tr><td>Mobile Phone:</td><td><asp:TextBox ID="txtPhMobile" Width="150" runat="server"></asp:TextBox></td></tr> 
    </table> 

    <input type="button" class="caption" value="Register" id="btnRegister" name="btnRegister" onclick="btnRegister_OnClick()"/> 
    <br/> 
    <asp:Label ID="lblMessage" runat="server" class="message"></asp:Label> 
    <br/> 
    <asp:Label ID="lblMessage2" runat="server" class="message"></asp:Label> 
    <br/> 
    <asp:Label ID="lblDataId" runat="server"></asp:Label> 
</div> 
</asp:Content> 

得到任何帮助,为什么这可能会发生,因为这项工作将在今天晚些时候完成

+0

我上传的所有服务器在我的大学,同样的问题依然存在。必须与代码相关?我不明白怎么样 – StuckStudent 2014-10-12 11:15:33

回答

0

而是在页面加载通过这些方法,它们写入按钮点击事件作为。

protected void btnRegister_Click(object sender, EventArgs e) 
{ 
    //Save the registration data into database, 17/8/2014 
     SaveRegistration(); 
     sendEmail(); 
} 

更改注册按钮的HTML标记,

<asp:Button type="button" CssClass="caption" Text="Register" ID="btnRegister" onclick="btnRegister_Click" onClientClick="javascript:btnRegister_OnClick();"/> 
+0

谢谢! :)我不确定为什么我们首先要这样做,但它工作了一段时间......我做的一些改变必须一直让页面回传很多次?那么,将runat =“server”添加到您的解决方案解决了我的问题:)非常感谢。 – StuckStudent 2014-10-12 12:21:28

+0

我错了,这个解决方案完全绕过了我的javascript验证......任何建议?时间不足:( – StuckStudent 2014-10-12 13:09:40

+0

)您可以使用验证来实现此目的。使用requiredfieldvalidators和regularexpressionvalidators进行客户端验证。 – sudip 2014-10-13 05:06:50