批量更新插入数据问题
有表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)--------------------编程问答-------------------- 做个定时器 每隔几秒就去调用A表 如果A表的ID在B表中没有 那么就取出这张表 然后把这条数据赋给B表 --------------------编程问答-------------------- 不是啊。。。先一个文本框,输入订单号,查询,查询出A表中的记录,然后这些记录可更改,更改完的数据存入B表。。什么定时器啊。。。 --------------------编程问答-------------------- public class contentinfo
{
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();
}
{
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