asp.net Oracle 之Insert 与 Update 更新封闭代码

php中文网
发布: 2016-06-07 17:45:48
原创
1144人浏览过

.net oracle 之insert 与 update 更新封闭代码
 
觉得我可以从的更新方法下手,于是有了下面这些尝试了。

在oracle 中insert 语句是可以使用 returning 返回新增的记录的。

于是我们的insert 语句就是这样了.

insert into tablename (uniquecolumn,othercolumns)
values(table_seq.nextval,values) returning uniquecolumn into :unique_id。

这样执行之后,我就可以通过out参数 unique_id 获取新增的记录的主键啦

 

public override object insert(editorparams pm)         {             if (pm != null && pm.editvalues.count > 0)             {                 querysetting qs = configenginer.instance.datamodels[pm.modeltype];                 string insertformart = @"insert into #oysterval:tablename# (#oysterval:uniquecolumn#,#oysterval:columns#) values(#oysterval:tablename#_seq.nextval,#oysterval:values#) returning #oysterval:uniquecolumn# into :unique_id";                 dictionary vals = new dictionary();                 list parms = new list();                 vals.add("tablename", qs.tablename);                 vals.add("uniquecolumn", qs.uniquecolumn.columnname);                 vals.add("columns", pm.insertcolumns);                 vals.add("values", pm.insertvalues);                 //system.nullable                 var unqtype = qs.uniquecolumn.propertytype;                 if (unqtype.fullname.contains("system.nullable"))                 {                     var types = unqtype.getgenericarguments();                     if (types != null && types.length > 0)                     {                         unqtype = types[0];                     }                 }                 var pr = new oracleparameter(":unique_id", activator.createinstance(unqtype));                 pr.direction = parameterdirection.inputoutput;                 parms.add(pr);                 parms.addrange(pm.dataparms);                 string sql = insertformart.tooystertemplate(vals);                 pm.effectcount = dbenginer.instance.executenonquery(sql, parms.toarray());                 pm.effectuniqueids.add(pr.value);                 return pm.effectuniqueids[0];             }             else             {                 throw new exception("请检查传入的editparams,更新列数据不能为空!");             }             return null;         }


里面使用到的其他类型引用,以后会慢慢分享。

而update 则可以这样: uniquecolumn from tablename where condition for update。

将要更新的行select 出来,并且加上update 的锁。保证update按顺序执行,而不会错乱

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号