sql update 子查询返回的值不止一个,跨数据库批量更新特指定字段(两个数据库数据表结构一样的)。

sql update 子查询返回的值不止一个,跨数据库批量更新特指定字段(两个数据库数据表结构一样的)。,第1张

update hd2008.dbo.shangpin

set

hd2008.dbo.shangpin.byzd7=

(select max(b.byzd7)

from

hd2008.dbo.shangpin as a,hd2008_150202.dbo.shangpin as b

where

a.spdm=b.spdm)

有一个办法,可能是你想要的。但是不保证一定能实现你的目的

在C#中有一个SqlCommandBuilder类,该类用来批量自动更新表数据变化,

说是自动更新,其实是根据已知的select语句,来自动生成其他的update,delete语句。

我以前项目的sqlhelper中,用这个类自定义过批量更新方法,在winform中使用一切ok。方法发你,看有用没。

有些细节一定要注意的是,表状态决定表数据的 *** 作,比如表某行状态是修改,那么SqlCommandBuilder会执行update。但是这个状态你要控制好。另外,你传递的select语句,一定要和你所构造的表结构接近吻合。看方法。

/// <summary>

/// operare database by commandbuilder

/// </summary>

/// <param name="connectinString">connectinString</param>

/// <param name="commandString">commandString</param>

/// <param name="sourceDable">do update or insert database table</param>

public static int ExecuteByCommandBuilder(string connectinString, string commandString, DataTable sourceDable, SqlParameter sqlparam)

{

SqlConnection sqlcon = new SqlConnection()

sqlcon.ConnectionString = connectinString

using (SqlCommand sqlcommand = new SqlCommand(commandString, sqlcon))

{

if (sqlparam != null)

{ sqlcommand.Parameters.Add(sqlparam)}

SqlDataAdapter da = new SqlDataAdapter()

da.SelectCommand = sqlcommand

//DataSet ds = new DataSet()

//da.Fill(ds)

//ds.Tables[0].Merge(sourceDable, false)

SqlCommandBuilder sqlcommandbuilder = new SqlCommandBuilder(da)

return da.Update(sourceDable)

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9979789.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-04
下一篇 2023-05-04

发表评论

登录后才能评论

评论列表(0条)

保存