zoukankan      html  css  js  c++  java
  • MSDAORA Sql的参数传递方法

    MSDAORA Sql的参数传递方法

      MSDAORA及Oracle .NET Framework 数据提供程序。Oracle .NET Framework 数据提供程序支持使用 Oracle 客户端软件提供的 Oracle 调用接口 (OCI) 访问 Oracle 数据库。该数据提供程序设计的功能与 SQL Server、OLE DB 和 ODBC 的 .NET Framework 数据提供程序的功能类似。要使用 Oracle .NET Framework 数据提供程序,应用程序必须如下所示引用 System.Data.OracleClient 命名空间。

      使用Sql形式如下:

    INSERT INTO TS_ITEM(ITEM_CD) VALUES(:ITEM_CD)
    SELECT ITEM_CD  FROM TS_ITEM WHERE ITEM_CD BETWEEN :ITEMFROM AND :ITEMTO

      Sql中的【:ITEM_CD,:ITEMFROM,:ITEMTO】这些特殊的参数名就是MSDAORA的参数传递特点。

      1:参数名不区分大小写。

      2:SQL 语句传递参数时不支持问号 (?) 占位符,必须使用命名的参数。

        3:SQL 语句中使用命名的参数时,参数名前面必须有一个冒号 (:)。在存储过程或在代码的其他地方引用命名的参数时(例如,将 OracleParameter 对象添加到 Parameters 属性时),请不要在命名的参数前加上冒号 (:)。数据提供程序会自动提供冒号。

      4:OracleParameters集合中参数的数量必须等于命令文本中命名参数的数量,否则用于 Oracle 的 .NET Framework 数据提供程序会引发错误。

    应用举例:

            /// <summary>
            ///参数追加
            /// </summary>
            /// <param name="valName">参数名</param>
            /// <param name="var">参数値</param>
            /// <param name="valType">参数类型</param>
            public static void AddDbParameter(string valName, object var, OracleType valType)
            {
                OracleParameter p = new OracleParameter();
                p.ParameterName = valName;
                p.Direction = ParameterDirection.Input;
                p.OracleType = valType;
                p.IsNullable = true;
                p.Value = var;
                DbCommand.Parameters.Add(p);
            }
            /// <summary>
            /// 数据取得
            /// </summary>
            /// <param name="i_ItemFrom">項目From</param>
            /// <param name="i_ItemTO">項目To</param>
            /// <returns></returns>
            public static DataTable GetData(string i_ItemFrom, string i_ItemTO)
            {
                MsOracleParModel.PreProcess();
                MsOracleParModel.PrepareDbSql(DBSql.MsORASelSql);
                MsOracleParModel.AddDbParameter("ITEMFROM", i_ItemFrom, OracleType.VarChar);
                MsOracleParModel.AddDbParameter("ITEMTO", i_ItemTO, OracleType.VarChar);
    
                return MsOracleParModel.GetDataSet("M_ITEM").Tables[0];
            }

        存储过程也是如此使用,只是CommandType不一样而已。

     DbCommand.CommandType = CommandType.StoredProcedure;

        优点:1,在缓存没清除的情况下,此Sql数据库只需解析一次,再次执行此Sql时速度将更快。

            2,传入参数顺序没要求,只要名字对应上就可以。

        缺点:1,数据类型和Oracle数据库有些不一致。

            2,速度比不过ODP。

            其他缺点等大虾提供了。

    附上此DBHelper(精简版):

    MSORA DBHelper

    上一篇:OLE DB Sql的参数传递方法   下一篇:ODP.Net Sql的参数传递方法

    每天成就一小步,积累下来就是一大步。 转发本文请注明出处,谢谢您的阅读与分享!
  • 相关阅读:
    linux 操作 I/O 端口
    linux I/O 端口分配
    大数问题:求n的阶乘
    POJ 2586 Y2K Accounting Bug
    每天一点儿Java--ComboBox
    android的一些控件
    解决Linux(ubuntu),windows双系统重装后恢复开机选单
    Mysql数据备份与恢复
    log4net 存储到oracle 调试 Could not load type [log4net.Appender.OracleAppender]
    POJ 2533 Longest Ordered Subsequence
  • 原文地址:https://www.cnblogs.com/lixiaobin/p/MSDAORA.html
Copyright © 2011-2022 走看看