当前位置:编程学习 > C#/ASP.NET >>

批量更新插入数据问题

有表A和表B,两个表的结构完全一样,表A中有原始数据,比如订单号,姓名,单价,数量,总价等,现在要求如下:

输入订单号(可输入多个订单号):2001,点击按钮,显示出A表中如下信息:
订单号:2001,姓名:张三,单价6.00,数量1,总价6.00
在页面上将其姓名修改为李四,其他不变,点保存
则B表中插入2条记录
记录1:订单号:1002001,姓名:张三,单价-6.00,数量1,总价-6.00
(原记录订单号前加100,单价和总价变负)
记录2:订单号:1002001,姓名:李四,单价6.00,数量1,总价6.00
(页面中新修改的记录)
求解。。。谢谢
--------------------编程问答-------------------- 看代码吧,这样清楚点! --------------------编程问答-------------------- 不就是一个insert into 么。 --------------------编程问答-------------------- 这个在程式里比较好判断,如果只用一条SQL语句来写可能比较麻烦,可以写个存储过程。 --------------------编程问答-------------------- 这个不能用gridview啊,比如在A表中根据订单号查出2条记录,有5列,那么就需要输出到页面上的10个文本框中显示,如果修改某个值,还要获取所有的值插入B表 --------------------编程问答--------------------
public static void TableValuedToDB(DataTable dt)
{
    SqlConnection sqlConn = new SqlConnection(
      ConfigurationManager.ConnectionStrings["ConnStr"].ConnectionString);
    const string TSqlStatement =
     "insert into BulkTestTable (Id,UserName,Pwd)" +
     " SELECT nc.Id, nc.UserName,nc.Pwd" +
     " FROM @NewBulkTestTvp AS nc";
    SqlCommand cmd = new SqlCommand(TSqlStatement, sqlConn);
    SqlParameter catParam = cmd.Parameters.AddWithValue("@NewBulkTestTvp", dt);
    catParam.SqlDbType = SqlDbType.Structured;
    //表值参数的名字叫BulkUdt,在上面的建立测试环境的SQL中有。
    catParam.TypeName = "dbo.BulkUdt";
    try
    {
      sqlConn.Open();
      if (dt != null && dt.Rows.Count != 0)
      {
          cmd.ExecuteNonQuery();
      }
    }
    catch (Exception ex)
    {
      throw ex;
    }
    finally
    {
      sqlConn.Close();
    }
}

public static DataTable GetTableSchema()
{
    DataTable dt = new DataTable();
    dt.Columns.AddRange(new DataColumn[]{
      new DataColumn("Id",typeof(int)),
      new DataColumn("UserName",typeof(string)),
      new DataColumn("Pwd",typeof(string))});

    return dt;
}

static void Main(string[] args)
{
    Stopwatch sw = new Stopwatch();
    for (int multiply = 0; multiply < 10; multiply++)
    {
        DataTable dt = TableValued.GetTableSchema();
        for (int count = multiply * 100000; count < (multiply + 1) * 100000; count++)
        {        
            DataRow r = dt.NewRow();
            r[0] = count;
            r[1] = string.Format("User-{0}", count * multiply);
            r[2] = string.Format("Pwd-{0}", count * multiply);
            dt.Rows.Add(r);
        }
        sw.Start();
        TableValued.TableValuedToDB(dt);
        sw.Stop();
        Console.WriteLine(string.Format("Elapsed Time is {0} Milliseconds", sw.ElapsedMilliseconds));
    }

    Console.ReadLine();
}
--------------------编程问答-------------------- 做个定时器 每隔几秒就去调用A表 如果A表的ID在B表中没有 那么就取出这张表 然后把这条数据赋给B表 --------------------编程问答-------------------- 不是啊。。。先一个文本框,输入订单号,查询,查询出A表中的记录,然后这些记录可更改,更改完的数据存入B表。。什么定时器啊。。。 --------------------编程问答-------------------- public class contentinfo
{
    private string _ID;
    private string _Name;
    private string _count;
    .......

    public contentinfo(string id,string name,string count,....)
   {
       this._ID=id;
       ......
   }
   public ID
  {
     get{..}
     set{..}
  }
}
list<contentinfo> coninfo=new list<contentinfo>
建立业务实体类,你查询几条信息 相对应生成几个对象,添加到LIST中,通过实体类接口添加到tableB中 --------------------编程问答-------------------- 关键是,如果查询出A表中2行*6列的数据,那我是不是还要动态去造12个文本框,去动态分配ID,然后如果修改了某个值,再获取12个框的值,再插入B表,是不是太麻烦了?
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,