C# Asp.net表单将数据插入数据库中的错误字段
我有一个Asp.net表单,用于使用c#将用户数据插入.mdb文件。数据已成功输入,但未输入此人的电子邮件地址。而是将人名(第一个条目)放在数据库的电子邮件字段中,而不是将任何内容放在名称字段中。如何在数据库的“电子邮件”列(pEmail)中输入电子邮件,在“姓名”列中输入人名(pName) 表格编号:C# Asp.net表单将数据插入数据库中的错误字段,c#,asp.net,database,C#,Asp.net,Database,我有一个Asp.net表单,用于使用c#将用户数据插入.mdb文件。数据已成功输入,但未输入此人的电子邮件地址。而是将人名(第一个条目)放在数据库的电子邮件字段中,而不是将任何内容放在名称字段中。如何在数据库的“电子邮件”列(pEmail)中输入电子邮件,在“姓名”列中输入人名(pName) 表格编号: <form id="form1" runat="server"> <div style="height: 138px"> Enter N
<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:
<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>
数据库只有两列可供输入,一列名为pName,另一列名为pEmail。我发现以下问题:
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语句覆盖上一条SQL语句,并再次添加相同的参数,但添加的值不同。然后在执行时,它只执行您设置CommandText的最后一条SQL语句,并使用您添加的两个@nm参数中的第一个参数。我发现以下问题:
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语句覆盖上一条SQL语句,并再次添加相同的参数,但添加的值不同。然后在执行时,它只执行您设置CommandText的最后一条SQL语句,并使用您添加的两个@nm参数中的第一个参数。下面是使用一个insert 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!";
}
}
}
因为您正在用插入电子邮件的插入查询覆盖插入名称的插入查询
但是,您应该使用相同的查询插入这两个值,因为它们是相同记录的一部分。下面是使用一个insert 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!";
}
}
}
因为您正在用插入电子邮件的插入查询覆盖插入名称的插入查询
但是,您应该使用相同的查询插入这两个值,因为它们是同一记录的一部分。使用一个SQL查询同时插入名称和电子邮件。您所做的是尝试将电子邮件作为新记录插入,但它不会与输入的名称相关联。@DFord噢,天哪,谢谢,我对此很陌生。使用一个SQL查询同时插入名称和电子邮件。您所做的是尝试将电子邮件作为新记录插入,它不会与输入的名称相关联。@DFord噢,天哪,谢谢,我对这一点很陌生。