【问题标题】:Select from table, then insert that (value + 1) into another table?从表中选择,然后将 (value + 1) 插入到另一个表中?
【发布时间】:2013-02-20 09:01:07
【问题描述】:

感谢您查看我的问题。希望我能得到答案。我有一个 C# 项目。我正在尝试从表中获取 IF 字段。一旦我有了这些数据,我想将值增加 1。(例如,我抓取 10000,然后添加 1 使其成为 10001。)然后,我想将增加的值输入到另一个表中。

这是我目前所拥有的(仅选择查询):

cmd = new SqlCommand("select reqID from [RequestID] where (ID = 1)", con);

我尝试使用 DataSet 没有任何进展。我对编码不太熟悉,但正在尝试!

DataSet ds = new DataSet();
myDA1.Fill(ds, "RequestID");
Int64 RequestID = default(Int64);
RequestID = ds.Table("RequestID").Rows(0).Item("ReqID");
RequestID += 1;

任何帮助将不胜感激!

乔什

【问题讨论】:

  • 我使用了 ExecuteScalar,它运行良好! Int64 请求 ID = 默认(Int64); ReqID = (Int64)cmd.ExecuteScalar();请求 ID += 1;

标签: c# asp.net select insert dataset


【解决方案1】:

只要运行:

INSERT INTO yourOtherTable ( reqId ) 
SELECT reqID + 1 
FROM RequestID

【讨论】:

  • 感谢您的回复。我运行了那个查询,但我没有将值输入到另一个表中。这就是我所做的: cmd = new SqlCommand("insert into [Transactions] (ReqID) select ReqID+1 from [RequestID]", con);
  • 我还在其中添加了一个 WHERE 子句,没有任何变化。
  • 好吧,你必须执行它。 cmd.ExecuteNonQuery();
【解决方案2】:

您是否尝试从 SQL 中的表中获取值?

如果是这样,您可能不需要使用数据集,您只需要从 SQL 中读取值。

MSDN article on Ado.Net

使用 SqlDataReader 获得值后,您可以递增并重新插入它。

Simple CRUD operations using Ado.Net

【讨论】:

  • 数据集是出了名的讨厌,我认为如果你专注于读取值,你就成功了一半,因为它只是在重新插入之前增加它的一个小例子。
  • 我想通了。我使用了 ExecuteScalar。 Int64 请求 ID = 默认(Int64); ReqID = (Int64)cmd.ExecuteScalar();请求ID += 1;
【解决方案3】:

只需改变一下

样本

string sql1 = string.Format(@"select reqID from [RequestID] where (ID = 1)");
        SqlDataAdapter da1 = new SqlDataAdapter(sql1, con);
        DataSet ds1 = new DataSet();
        con.Open();
        da1.Fill(ds1);
        RequestID = ds.Table[0]["RequestID"];

【讨论】:

    【解决方案4】:

    为什么不在 SQL 中增加值呢?它真的很擅长这种事情。有了你想要的结果,你可以做这样的事情。

    cmd = new SqlCommand("select reqID + 1 as reqID from [RequestID] where (ID = 1)", con);
    con.Open();
    List<int> requestIds = new List<int>();
    using(SqlDataReader reader = cmd.ExecuteReader()){
      while(reader.Read()){
        requestIds.Add(reader.GetInt32(0));
      } 
    }
    return requestIds;  // I find that Lists are much easier to work with 
    // than DataTables, particularly for novices.
    

    如果你想要更明确的东西,行

        requestIds.Add(reader.GetInt32(0));
    

    可以修改为:

        requestIds.Add(reader.GetInt32(0) + 1);
    

    与您保持相同的查询。

    编辑:由于评论而修改了回复:

    感谢您的回复。我想将该值输入到另一个表中,但我将在“稍后”添加该值,以及最终用户将输入的所有其他数据。

    【讨论】:

    • 感谢您的回复。我想将该值输入到另一个表中,但我将在“稍后”添加该值,以及最终用户将输入的所有其他数据。
    猜你喜欢
    • 2016-10-16
    • 2013-12-23
    • 2016-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多