私は、C#を使用して.mdbファイルにユーザーデータを挿入するために使用しているAsp.netフォームを使用しています。データは正常に入力されましたが、その人の電子メールアドレスは入力されません。代わりに、名前(最初のエントリ)の人物が、データベースの電子メールフィールドに配置され、名前のフィールドには何も配置されません。電子メールの列(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:
<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!";
}
}
}
、データベースが唯一のエントリのための2つの列、1と呼ばれるは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文をオーバーライドし、再度同じパラメータを追加することなく、異なる値としている:
1つのSQLクエリを使用して、名前と電子メールを同時に挿入します。あなたのやっていることは、電子メールを新しいレコードとして挿入しようとしていて、それが入力された名前に関連付けられていないということです。 – DFord
@Fordordああ、ありがとう、私はこれに非常に新しいです。 – penmas