(Enterprise+Library)Oracle应用【DOC精选】.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
(EnterpriseLibrary)Oracle应用【DOC精选】

(Enterprise Library)Oracle应用SQL Server的使用者来说,只要把一个int型字段设置成“自增”就可以了。但是Oracle没有“自增”字段,这篇文章谈谈Oracle实现字段自增长并用C#调用微软企业库来访问的运用。 一.建表 建立一个测试用的表Test结构如下 列名 类型 是否可为空 说明 ID NUMBER N 实现自增字段 A NUMBER Y 测试字段1 B VARCHAR2(50) Y 测试字段2 接下来我们要实现列ID的自增,并用企业库调用。 二.建立序列 建立一个名称为Test_SQL的序列,使用PL/SQL查看序列的属性如下: SEQUENCE_OWNER ZHYUANSAN SEQUENCE_NAME TEST_SQL MIN_VALUE 1 MAX_VALUE 1E27 INCREMENT_BY 1 CYCLE_FLAG N ORDER_FLAG N CACHE_SIZE 20 三.建立触发器 建立触发器代码如下: create or replace trigger Test_INSERT_trigger before insert on Test for each row begin select Test_SQL.nextval into :new.ID from dual; end ; 四.使用企业库插入数据 这时,我们可以使用PL/SQL插入数据: insert into test values(0,23,’bbb’); 这里虽然第一个字段插入的数据是0,但是触发器自动会给它赋自增字段的值。 1.企业库配置文件 使用微软的企业库,连接数据库配置文件这样写: ? configSections ??? section name=dataConfiguration type=Microsoft.Practices.EnterpriseLibrary.Data.Configuration.DatabaseSettings, Microsoft.Practices.EnterpriseLibrary.Data,Version= 2.0.0.0,Culture=neutral,PublicKeyToken=null/ ? /configSections ?dataConfiguration defaultDatabase= ORACLE/r ?connectionStringsd 牋?add name=ORACLE connectionString=Data Source=gis;User ID=ZHYUANSHAN;Password=123456;Unicode=True providerName= System.Data.OracleClient/is ?/connectionStringsc 2.创建数据库访问对象 public static Database db = DatabaseFactory.CreateDatabase(); 3.插入记录代码 string strsql = INSERT INTO TEST(0,:A,:B) ; DbCommand cmd = db. GetSqlStringCommand(strsql); db. AddInParameter (cmd, A, DbType.Int32, 23); db. AddInParameter (cmd, B, DbType.String, ‘ddd’); db.ExecuteNonQuery(cmd); 五.问题 上面已经实现了数据的插入,也实现了字段自增,但是还有个问题就是,当有两个表关联时,我希望插入一个表的数据后,能够返回自增字段的值,然后再把这个值插入到另外一个表,实现两个表的关联。 如何返回这个新插入的自增字段的值呢? 有人说直接再写一行代码执行SELECT Test_SQL.currval from dual来获取自增字段的值不就可以了吗? 实际这样调用是不行的,SELECT Test_SQL.currval from dual只能在使用currval.nextval的同一个会话中调用,否则会出现“序列(号)不存在”的错误。 六.实现返回自增标识字段值 要马上获取自增标识字段的值,有以下3中方法: 1.先取值再插入(不需要触发器) 先执行命令SELECT Test_SQL.nextval from dual,来获取标识的值,再把这个值作为参数插入到数据库。这样就不需要触发器了,但是导致编码变得复杂,要增加获取标识的代码,插入时也要多传一个参数。 获取标识字段值代码: ? string strsql = SELECT Test_SQL.nextval FROM dua

文档评论(0)

taotao0c + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档