这样在一个sql里完成更新和插入,只用一次数据库连接,效率提高了
2012-10-24 22:59
866 查看
代码如下,请给出具体修改代码 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(); } } 你这样在并发多的时候很可能造成冲突的,直接用: cmd.CommandText = @"Update ProductCategory set xxx where xxx if @@ROWCOUNT = 0 insert into ProductCategory xxx"; 这样在一个sql里完成更新和插入,只用一次数据库连接,效率提高了,并发可能也减小了
是sql,SqlServer支持同时执行多个sql的 后面直接cmd.ExecuteNonQuery();
相关文章推荐
- C#:30行数据插入到数据库中的效率测试-一行行执行、构造SQL一次执行、SqlBulkCopy
- 一次向数据库中插入多条相同记录的SQL方法(只有一个列不同)
- RAC 数据库安装完成后,使用sql连接 提示连接到一个空实例
- C#:30行数据插入到数据库中的效率测试-一行行执行、构造SQL一次执行、SqlBulkCopy
- C#serialport收到数据实时插入数据库 datagridview更新一行 提高效率
- ASP.NET通过配置Web.config文件提高手动绑定数据库效率的一个简单方法,不用每次手动连接数据库地址,或者数据库地址变更时只改一处即可。
- 在一个大DataTable的基础上去除重复数据,分别创建2个小DataTable,省去多次数据库连接,提高效率,加快程序运行
- 关于数据库优化2——关于表的连接顺序,和where子句的前后顺序,是否会影响到sql的执行效率问题
- sql 把一个数据库中的表数据 插入另一个数据库表中
- PostgreSQL数据库添加更新只用一个函数insertupdate
- PDO与原生方式对数据库连接插入操作效率对比
- 一条sql语句(关于将一个表里的数据汇总,更新数据库中的另外一张表的列值
- C#一次连接数据库执行多条sql语句(三种方法)
- 一个测试SQL2005数据库连接的JSP文件
- 提高数据库插入效率
- 一个测试SQL2005数据库连接JSP档
- c# 使用SqlBulkCopy 提高大数据插入数据库速度
- 提高数据库效率的一些方法--eg:大批量循环插入数据的简化
- sql中连接两个不同的数据库(A在同一个服务器,B不在一个服务器)
- MySQL中明知道查询结果只有一个,SQL语句中使用LIMIT 1会提高查询效率