下面这段代码的大致意思:两个表overview和upload,需要从overview表中查询出满足a.permit_no=b.permit_no条件的数据,放到dt中。之后再用dt中的数据更新upload表中的对应字段。
String selectSql = "select a.jianan as jianan,a.house as house from overview as a,upload as b where a.permit_no=b.permit_no"; //查询语句
//要求两个表中的permit_no相等才查询出来
String updateSql = "update upload set upload.jianan=@jianan,upload.house=@house from overview,upload where upload.permit_no=overview.permit_no"; //更新语句
System.Data.DataTable dt = db.ExecSqlRetDT(selectSql, null, null); //执行查询操作, 返回一个DataTable
if(dt.Rows.Count>0)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
DataRow row = dt.Rows[i];
Decimal jianan = Convert.ToDecimal(row[0]); //jianan数据类型为decimal
int house = Convert.ToInt32(row[1]); //house数据类型为int
SqlParameter[] par = { new SqlParameter("@jianan", jianan),
new SqlParameter("@house",house) };
db.ExecSqlNoRet(updateSql, par); //执行更新操作
}
}
问题来了:执行完上面这段代码之后,upload表中jianan和house字段的数据都更新了,但是两个字段中对应的数据都相同,比如都是122,1。本来在overview表中这两个字段中的数据是不同的
String updateSql = "update upload set upload.jianan=@jianan,upload.house=@house from overview,upload where upload.permit_no=overview.permit_no"; //更新语句
這句 錯誤。
String updateSql = "update upload set upload.jianan=@jianan,upload.house=@house from upload where upload.permit_no=@permit_no"; //更新语句
然後 給 @permit_no 再 給一個數字。
你那樣 更新的話,肯定是都相同的。
在aspx页面中执行更新操作之后,表中的数据都更新了,每一个字段的内容都是相同的,就像122,1那种一样,不明白什么原因?
还有如果我用sqlcommand.ExecuteNonQuery(),就一条语句的话是不是只更新一条记录,还是所有的满足条件的记录都更新?
@kop1892: 這個 主要 看你的更新 條件哦。
你把简单的问题复杂化了
顶楼上,你确实把简单的问题复杂化了,一句SQL语句就搞定,没有必要循环。
Update b set b.jianan=a.jianan, b.house=a.house from overview a, upload b where a.permit_no=b.permit_no
条件没有指定正确吧。