日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 默认站点!

默认站点

當(dāng)前位置: 首頁(yè) >

这样在一个sql里完成更新和插入,只用一次数据库连接,效率提高了

發(fā)布時(shí)間:2023/11/27 31 豆豆
默认站点 收集整理的這篇文章主要介紹了 这样在一个sql里完成更新和插入,只用一次数据库连接,效率提高了 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
代碼如下,請(qǐng)給出具體修改代碼
public void AddCategory(string nCategoryName, int nImgId, int nBelongToId, int nShopId, int nSortId)
??? {
??????? int CategoryId = 0;
??????? string cmdText = "Select top 1 CategoryId from ProductCategory where CategoryName='' ROWLOCK";
??????? SqlConnection conn = new SqlConnection(Connection.ConnString);
??????? SqlCommand cmd = new SqlCommand(cmdText, conn);
??????? conn.Open();
??????? SqlTransaction tr = conn.BeginTransaction();
??????? cmd.Transaction = tr;
??????? try
??????? {
??????????? SqlDataReader dr = cmd.ExecuteReader();
??????????? if (dr.Read())
??????????? {
??????????????? CategoryId = Int32.Parse(dr["CategoryId"].ToString());
??????????? }
??????????? dr.Close();
??????????? if (CategoryId == 0)
??????????? {
??????????????? cmd.CommandText = "INSERT ProductCategory(CategoryName,ImgId,BelongToId,ShopId,SortId) VALUES('" + nCategoryName + "','" + nImgId + "','" + nBelongToId + "','" + nShopId + "','" + nSortId + "')";
??????????????? cmd.ExecuteNonQuery();
??????????? }
??????????? else
??????????? {
??????????????? cmd.CommandText = "Update ProductCategory Set CategoryName='" + nCategoryName + "',ImgId='" + nImgId + "',BelongToId='" + nBelongToId + "',SortId='" + nSortId + "',ShopId='" + nShopId + "' Where CategoryId=" + CategoryId;
??????????????? cmd.ExecuteNonQuery();
??????????? }
??????????? tr.Commit();
??????? }
??????? catch
??????? {
??????????? tr.Rollback();
??????? }
??????? finally { conn.Close(); }
??? }

你這樣在并發(fā)多的時(shí)候很可能造成沖突的,直接用: cmd.CommandText = @"Update ProductCategory set xxx where xxx if @@ROWCOUNT = 0 insert into ProductCategory xxx";這樣在一個(gè)sql里完成更新和插入,只用一次數(shù)據(jù)庫(kù)連接,效率提高了,并發(fā)可能也減小了
是sql,SqlServer支持同時(shí)執(zhí)行多個(gè)sql的
后面直接cmd.ExecuteNonQuery();

轉(zhuǎn)載于:https://www.cnblogs.com/zxktxj/archive/2012/10/24/2737933.html

總結(jié)

以上是默认站点為你收集整理的这样在一个sql里完成更新和插入,只用一次数据库连接,效率提高了的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得默认站点網(wǎng)站內(nèi)容還不錯(cuò),歡迎將默认站点推薦給好友。