【问题标题】:Inserting Data into SQL database table from multiple aspx web pages从多个 aspx 网页将数据插入 SQL 数据库表
【发布时间】:2016-11-09 20:29:03
【问题描述】:

我目前通过 Visual Studio 拥有一个包含三个 .aspx 页面的 asp.net 网站。每个 .aspx 页面中都有简单的标签和文本框字段。每个 web aspx 页面中都有一个按钮,用于重定向到第二页和第三页,以及第三页末尾的提交按钮。按钮后面还有一个 sql 命令/查询,可将文本框中的输入插入 sql 数据库。我在数据库中有一张表,我想从所有三个页面中输入。当我尝试这样做时,第一页的输入正确地停留在第一行。然后第二页的输入变成了自己的第二行,依此类推……我还为每个 web aspx 页面使用了 INSERT 语句。我在下面有一张数据库是什么样子的图片......我怎样才能将所有输入放在一行中

【问题讨论】:

标签: c# asp.net sql-server


【解决方案1】:

如果你想把它排成一行,你需要做一个INSERT语句,其余的应该是UPDATE语句。 每个INSERT 语句都会在数据库中创建一个新行。

当尝试UPDATE 一行时,请确保添加WHERE ID = x 之类的内容,以便只更新一行。

【讨论】:

  • 这是我在每个网页中的代码...我应该只更改插入内容并说最后两页的更新吗? string sql = "INSERT INTO tblMyName " + "(Name)" + "Values " + "(@Name)"; CMethods.executeNonQuery(sql, "@Name", lblName.Text.Trim(),
  • 首先应该类似于INSERT INTO tblMyName (Name) VALUES (@Name)。如果 Name 是表的主键,接下来应该是更新,例如 UPDATE tblMyName SET Age = @Age WHERE Name = @Name 请注意,我在这里假设“名称”是表的主键(或至少是唯一键)。我建议添加一个整数类型的 ID 字段(或 UUID,或类似的东西)并将其用作主键。这将使插入语句更像:UPDATE tblMyName SET Age = @Age WHERE ID = @ID
  • 如果我不使用 ID 或主键怎么办?
  • 说实话,你应该。没有主键的 (SQL) 数据库表是非常糟糕的数据库设计。
【解决方案2】:

使用您当前的配置,您将需要更新语句而不是后续页面上的插入语句。

您还可以执行会话变量之类的操作,并在收集完所有信息后插入。

【讨论】:

  • 我看到您对另一个答案的评论。你会做类似 UPDATE tblmyname SET Nextvalue=variable WHERE name = name.但是你所做的事情有很多问题。名称不是一个好的唯一字段。你不应该传递这样的字符串,它会让你面临 sql 注入攻击。对于初学者。
猜你喜欢
  • 1970-01-01
  • 2017-06-07
  • 1970-01-01
  • 2013-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-20
  • 1970-01-01
相关资源
最近更新 更多