【发布时间】:2020-02-07 12:48:47
【问题描述】:
我创建了两个单独的表单并将数据存储在一个表中,但问题是数据单独存储行?我想将数据存储在一行中。
然后我创建了两个单独的表单并将数据存储在一个表中,我的数据单独存储有问题的行吗?
表名:经理
数据库字段名:
- managerid int pk autoincrement
- firstname varchar(50)
- lastname varchar(50)
- address varchar(50)
- permanantaddress varchar(50)
- mno int
- experiance int
- currentcompanyname varchar(50)
- previouscompanyname varchar(50)
- currentsalary int
- expectedsalary int
Registrationform.aspx
<div>
FirstName: <asp:TextBox ID="txtfname" runat="server"></asp:TextBox>
<br />
lastName: <asp:TextBox ID="txtlname" runat="server"></asp:TextBox>
<br />
<asp:Button ID="Button1" runat="server" Text="Insert" OnClick="Button1_Click" />
</div>
Registrationform.aspx.cs
protected void Button1_Click(object sender, EventArgs e)
{
string query = "Insert into manager (firstname,lastname) values(@firstname,@lastname)SELECT SCOPE_IDENTITY()";
SqlCommand cmd = new SqlCommand(query, cn);
cmd.CommandType = CommandType.Text;
cmd.Parameters.AddWithValue("@firstname", txtfname.Text);
cmd.Parameters.AddWithValue("@lastname",txtlname.Text);
cn.Open();
int? primaryKey = Convert.ToInt32(cmd.ExecuteScalar());
this.Session["primaryKey"] = primaryKey;
if(primaryKey != null)
{
Response.Redirect("Contactus.aspx");
}
cmd.ExecuteNonQuery();
cn.Close();
}
联系人.aspx
Address:
<asp:TextBox ID="txtadd" runat="server"></asp:TextBox>
<br />
PermanantAddress:
<asp:TextBox ID="txtperaddress" runat="server"></asp:TextBox>
<br />
Mno:
<asp:TextBox ID="txtmno" runat="server"></asp:TextBox>
<br />
<asp:Button ID="Button1" runat="server" Text="Insert" OnClick="Button1_Click" />
Contactus.aspx.cs
string sessionvariable;
protected void Page_Load(object sender, EventArgs e)
{
sessionvariable = Session["primaryKey"].ToString();
}
protected void Button1_Click(object sender, EventArgs e)
{
string query = "update manager set address=@address,permanantaddress=@permanantaddress,mno=@mno where managerid=@managerid";
SqlCommand cmd = new SqlCommand(query, cn);
cmd.CommandType = CommandType.Text;
cmd.Parameters.AddWithValue("@address", txtadd.Text);
cmd.Parameters.AddWithValue("@permanantaddress", txtperaddress.Text);
cmd.Parameters.AddWithValue("@mno", txtmno.Text);
cn.Open();
if (sessionvariable != null)
{
**here give an error System.Data.SqlClient.SqlException: Must declare the scalar variable "@managerid"**
cmd.ExecuteNonQuery();
}
cn.Close();
}
我想将数据存储在一行中。
查看我的监视窗口图片:
我的问题是我的问题是单独行中的数据存储区吗?
报错:这里报错 System.Data.SqlClient.SqlException:必须声明标量变量“@managerid”
【问题讨论】:
-
我在最后一天尝试解决这个问题,但问题没有解决帮助
-
你的设计一开始就不正确。所有三种形式都只有
db上下文,即manager与它们相关联,因此您很难跟踪何时发生的情况。您应该考虑为您的三个表单创建三个单独的表,并根据外键关联db中的三个表。该架构由您决定。目前,您要实现的目标很棘手。您可以使用Session存储来自不同表单的值,并检查所有三种表单的会话中的值是否存在,但这需要一些逻辑。 -
@RahulSharma session work in contactus page见上图问题是数据存储在单独的行中吗?
-
您想在会话变量中存储数据表吗?
-
@NaDeRStar 谢谢解决问题谢谢
标签: c# asp.net sql-server session