• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    .net实现oracle数据库中获取新插入数据的id的方法
    在sql sever中实现插入数据的自动增长是很容易的,但是在oracle数据库中实现这一操作不是很容易,同时要想在.net中实现获取新插入数据的id,而且不会出现读错的情况,就更显得困难了,为了解决在oracle数据中插入的数据能够自增id,同时获取新数据的id,并避免因并发操作而出现的id读错的问题。

    数据表结构为test(id,name)

    首先,解决数据id自增问题
    创建一个序列sequence(sequence详解可从网上搜一下,这里不赘述)
    create sequence SEQ_test
    minvalue 1
    maxvalue 99999999999999999999999999
    start with 21
    increment by 1
    cache 20;
    序列sequence有两个固有属性nextval(下一个值)和currval(当前值)
    这样在插入数据的sql语句中可以自动获取自增的id值:insert into test(id,name) values(seq_test.nextval,'name1')
    插入完毕后,就可以获取该id值了:select seq_test.currval from dual
    注意:序列的currval属性只有在插入语句insert完毕后形成短暂记录,所以必须在下一次数据库操作之前获取该值,否则失效无法获得,为了解决这一问题,我们可以通过创建存储过程来及时获取该值。
    然后,创建存储过程,实现插入和获值操作

    为了实现该存储过程的可扩展性,存储过程的参数包括三个:strInsertSQL(传递insert语句),seqName(获取序列的名称),ID(输出值,获取id)
    复制代码 代码如下:

    create or replace procedure p_GetItemID(
    strInsertSQL varchar2,
    seqName varchar2,
    ID out varchar2
    )
    is
    strSql varchar(200);
    begin
    execute immediate strInsertSQL;--执行插入语句
    strSql:='select '||seqName||'.currval from dual';--获取id的sql语句
    execute immediate strSql into ID;--执行获取id的sql语句
    EXCEPTION
    WHEN OTHERS THEN
    DBMS_output.PUT_LINE(SQLERRM);
    end p_GetItemID;

    最后,利用c#语言,在实现.net中实现程序应用

    同样为了实现该功能的扩展行,创建获取id的函数,数据库连接语句从webconfig中获取
    复制代码 代码如下:

    public string ExecuteProcedure(string strInsertSQL,string proName,string seqName)
    {
    try
    {
    if (m_Connection_orc.State != System.Data.ConnectionState.Open)
    {//从webconfig中获取数据库连接
    m_Connection_orc.Open();
    }
    }
    catch (System.Exception ex)
    {
    }
    try
    { //蓝色字体会核心语句
    OracleConnection dbConnection_orc;
    OracleCommand dbCommand_orc;
    dbConnection_orc = m_Connection_orc;
    dbCommand_orc = new OracleCommand(proName, dbConnection_orc); //proName为存储过程的名字
    dbCommand_orc.CommandType = CommandType.StoredProcedure;
    //在Parameters中添加的参数名称必须与数据库中存储过程中的参数名称、类型保持一致
    dbCommand_orc.Parameters.Add("strInsertSQL", OracleType.VarChar);
    dbCommand_orc.Parameters.Add("seqName", OracleType.VarChar);
    dbCommand_orc.Parameters.Add("ID", OracleType.VarChar);
    dbCommand_orc.Parameters["ID"].Direction = ParameterDirection.Output; //指定参数ID为输出类型的值
    dbCommand_orc.Parameters["strInsertSQL"].Value = strInsertSQL; //获取插入语句
    dbCommand_orc.Parameters["seqName"].Value = seqName; //获取序列名称
    dbCommand_orc.ExecuteNonQuery(); //执行操作
    string newID = dbCommand_orc.Parameters["ID"].Value.ToString(); //获取id的值
    return newID; //返回id值
    }
    catch (System.Exception ex)
    {
    throw ex;
    }
    finally
    {
    CloseConnection();
    }
    }

    至此,获取新插入数据的id值操作就结束了,在编程过程中,调用函数ExecuteProcedure就可以获取id值,哇咔咔
    您可能感兴趣的文章:
    • C#利用ODP.net连接Oracle数据库的操作方法
    • .Net连接Oracle数据库的实现代码
    • .net连接oracle的3种实现方法
    • asp.net中调用oracle存储过程的方法
    • ADO.Net对oracle数据库操作的实例代码
    • Ibatis.net结合oracle批量删除实现代码
    • asp.net中oracle 存储过程(图文)
    • 在.NetCore(C#)中使用ODP.NET Core+Dapper操作Oracle数据库
    上一篇:.net 刷新页面后弹出重试框的解决方法
    下一篇:ASP.NET 清除模式窗口数据缓存的操作方式
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯

    时间:9:00-21:00 (节假日不休)

    地址:江苏信息产业基地11号楼四层

    《增值电信业务经营许可证》 苏B2-20120278

    .net实现oracle数据库中获取新插入数据的id的方法 .net,实现,oracle,数据库,中,