【问题标题】:Swapping values from database in datagridview /w dataset在 datagridview /w 数据集中交换数据库中的值
【发布时间】:2013-10-16 13:40:56
【问题描述】:

我有一个关于交换我的数据库表中的几个值的问题。

我要建立的是一个显示调查的网站(在 ASP.net 中)。问题将存储在名为SURVEY_QUESTIONS 的表中(在 SQL Server 中)。

该表有以下列:

  • survey_question_id (int)
  • 问题(字符串)
  • 类型(字符串)
  • 活动(布尔)
  • 订单(整数)

现在,问题列中将存储一个问题,例如:

您对目前的情况满意吗?

类型可以是多项选择,也可以是开放列。活跃意味着如果它是活跃的,那么只有问题才会显示在调查中。我遇到的问题是最后一列,order。我想将问题从最低到最高排序。因此,如果我有 5 个问题,它们将按照顺序列 1、2、3、4、5 很好地排序。

我有一个 C# (Winforms) 应用程序,我可以在其中添加问题并进行编辑。我在 datagridview 中执行此操作,并使用数据集填充网格视图。例如,当我按下保存按钮时,datagridview 中的更改将更新到我的数据库中。

现在假设问题一的订单号为 3,问题五的订单号为 1。我希望问题一是第一个显示的问题,这意味着它的订单号应该是 1。但在这种情况下,问题五已经有订单号,我想要的是每当“占用”的订单号分配给另一个问题时,它们的订单号交换。

我在保存按钮后面有以下代码来更新数据库:

DialogResult dr = MessageBox.Show("Are you sure want to edit a question?", "Message", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Information);

if (dr == DialogResult.Yes)
{
    this.SURVEY_QUESTIONTableAdapter.Update(_PVB1314_005DataSet.SURVEY_QUESTION);
    datagridviewTest.Refresh();
    MessageBox.Show("Database updated");
}

希望有人能帮我解决这个问题,在此先感谢。

【问题讨论】:

    标签: c# sql-server database datagridview


    【解决方案1】:

    您需要开始使用存储过程。在您的代码中,您有一个显示“数据库已更新”的消息框。您如何知道数据库已更新?你甚至没有在 try catch 块中得到代码。

    使用要更新的 QuestionID 和要更新到的 OrderID 的输入参数编写存储过程。然后,您可以轻松测试所需的 OrderID 是否已在使用,如果没有,则运行更新语句。

    如果它正在使用中,并且您的订单列不允许重复值,您可能必须临时为您要获取其 OrderID 的行分配一个临时值,可能是 -1,存储您所在行的当前 OrderID要更改变量,请使用正确的 OrderID 更新要更改其 OrderID 的行,然后使用您临时存储的 OrderID 更新您刚刚更改为 -1 的 OrderID 的行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-27
      • 1970-01-01
      • 2016-06-26
      • 1970-01-01
      相关资源
      最近更新 更多