2016-10-18 39 views
0

我有一個Asp.net表單,我正在使用c#將用戶數據插入到.mdb文件中。數據已成功輸入,但未輸入該人員的電子郵件地址。相反,人員姓名(第一條目)被放入數據庫的電子郵件字段中,並且不在名稱的字段中添加任何內容。如何將電子郵件輸入電子郵件列(pEmail)和個人姓名(pName)到數據庫的名稱列中?Asp.net表單將數據插入到數據庫中的錯誤字段

表格代號:爲數據庫條目

<form id="form1" runat="server"> 
    <div style="height: 138px"> 

     Enter Name:<asp:TextBox ID="TextBox1" runat="server" style="margin-left: 12px"></asp:TextBox> 

     <asp:RequiredFieldValidator 
    id="reqName" 
    ControlToValidate="TextBox1" 
    Style="color:Red" 
    ErrorMessage="Please enter your name!" 
    runat="server" /> 

     <br /> 
     Enter Email:&nbsp;&nbsp;&nbsp; 
     <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox> 

     <asp:RegularExpressionValidator 
    id="ValidEmail" 
    ControlToValidate="TextBox2" 
    Style="color:Red" 
    ValidationExpression="^([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$" 
    ErrorMessage="Invalid Email Entry" 
    runat="server" /> 

     <br /> 
     <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Submit" /> 
     <br /> 
     <asp:Label ID="Label1" runat="server"></asp:Label> 

    </div> 
    </form> 

C#代碼:

using System.Data.OleDb; 
using System.Configuration; 

public partial class Default2 : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 

    protected void Button1_Click(object sender, EventArgs e) 
    { 
     OleDbConnection con = new OleDbConnection(); 
     con.ConnectionString = ConfigurationManager.ConnectionStrings["northwind"].ToString(); 
     con.Open(); 
     OleDbCommand cmd = new OleDbCommand(); 
     cmd.CommandText = "insert into[Table1](pName)values(@nm)"; 
     cmd.Parameters.AddWithValue("@nm", TextBox1.Text); 
     cmd.CommandText = "insert into[Table1](pEmail)values(@nm)"; 
     cmd.Parameters.AddWithValue("@nm", TextBox2.Text); 
     cmd.Connection = con; 
     int a = cmd.ExecuteNonQuery(); 
     if (a>0) 
     { 
      Label1.Text = "Inserted Sucessfully!"; 
     } 
    } 
} 

和數據庫只有兩列入境,一個叫PNAME和第二被叫pEmail。

+0

使用一個SQL查詢同時插入名稱和電子郵件。您所做的是嘗試將電子郵件作爲新記錄插入,並且不會與輸入的名稱相關聯。 – DFord

+0

@DFord哦,天哪,謝謝你,我對此很新。 – penmas

回答

2

這是使用一個插入SQL查詢的C#代碼。

using System.Data.OleDb; 
using System.Configuration; 

public partial class Default2 : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 

    } 

    protected void Button1_Click(object sender, EventArgs e) 
    { 
     OleDbConnection con = new OleDbConnection(); 
     con.ConnectionString = ConfigurationManager.ConnectionStrings["northwind"].ToString(); 
     con.Open(); 
     OleDbCommand cmd = new OleDbCommand(); 
     cmd.CommandText = "insert into[Table1](pName, pEmail)values(@nm, @em)"; 
     cmd.Parameters.AddWithValue("@nm", TextBox1.Text); 
     cmd.Parameters.AddWithValue("@em", TextBox2.Text); 
     cmd.Connection = con; 
     int a = cmd.ExecuteNonQuery(); 
     if (a>0) 
     { 
      Label1.Text = "Inserted Sucessfully!"; 
     } 
    } 
} 

因爲您正在覆蓋插入查詢,插入查詢插入名稱與插入查詢插入電子郵件。

但是,您應該使用相同的查詢插入兩個值,因爲它們是同一記錄的一部分。

1

我看到以下問題:

cmd.CommandText = "insert into[Table1](pName)values(@nm)"; 
cmd.Parameters.AddWithValue("@nm", TextBox1.Text); 
cmd.CommandText = "insert into[Table1](pEmail)values(@nm)"; 
cmd.Parameters.AddWithValue("@nm", TextBox2.Text); 

你創建一個SQL語句,設置參數,然後用另一覆蓋上一個SQL語句,並再次添加相同的參數,但有不同的值。然後在執行時,它只執行您設置CommandText的最後一條SQL語句,並使用您添加的兩個@nm參數中的第一個。