2014-10-12 3 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

답변

0

Page Load에서 이러한 메서드를 전달하는 대신 버튼 클릭 이벤트에 as를 씁니다.

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

+0

내가 잘못했다,이 솔루션은 완전히 내 자바 스크립트 유효성 검사를 우회 ... 어떤 제안? 시간이 얼마 남지 않았습니다 :( – StuckStudent

+0

그 목적으로 유효성 검사를 사용할 수 있습니다. 클라이언트 측 유효성 검사를 위해 requiredfieldvalidators 및 regularexpressionvalidators를 사용하십시오. – sudip

관련 문제