C# 中,连接oracle数据库 进行增删改查,存储过程等操作时 ,使用到哪些类?

第一,创建一个OracleCommand实例,代码是 new global::Oracle.ManagedDataAccess.Client.OracleCommand();

第二,创建一个OracleConnection实例, new global::Oracle.ManagedDataAccess.Client.OracleConnection();,赋值给第一个OracleCommand的Connection属性。

第三,赋值OracleCommand的CommandText属性,该属性等于"select ...."“”insert。。。“”,或者执行存储过程的语句“exec。。。”(定义存储过程的那部分不需要写)

第四,赋值OracleCommand的CommandType属性,该属性是选择一些已经定义好的枚举值,比如global::System.Data.CommandType.Text;就是文本,其他,比如存储过程是哪个值请具体到System.Data.CommandType去看。

示例:

public void test(global::System.Nullable<global::System.DateTime> DATESTART,
            global::System.Nullable<global::System.DateTime> DATEEND,
            ref object DATA)
        {
            var _connection = new global::Oracle.ManagedDataAccess.Client.OracleConnection();
            _connection.ConnectionString = global::WebApplication2.Properties.Settings.Default.ConnectionString;


            var cmd = new global::Oracle.ManagedDataAccess.Client.OracleCommand();
            cmd = new global::Oracle.ManagedDataAccess.Client.OracleCommand();
            cmd.Connection = _connection;
            cmd.CommandText = "G2_NS_PLAT.MYTEST";//存储过程的名称
            cmd.CommandType = global::System.Data.CommandType.StoredProcedure;
            global::Oracle.ManagedDataAccess.Client.OracleParameter param = new global::Oracle.ManagedDataAccess.Client.OracleParameter();
            param.ParameterName = "DATESTART";
            param.DbType = global::System.Data.DbType.Date;
            param.OracleDbTypeEx = global::Oracle.ManagedDataAccess.Client.OracleDbType.Date;
            param.IsNullable = true;
            param.SourceColumn = null;
            cmd.Parameters.Add(param);
            param = new global::Oracle.ManagedDataAccess.Client.OracleParameter();
            param.ParameterName = "DATEEND";
            param.DbType = global::System.Data.DbType.Date;
            param.OracleDbTypeEx = global::Oracle.ManagedDataAccess.Client.OracleDbType.Date;
            param.IsNullable = true;
            param.SourceColumn = null;
            cmd.Parameters.Add(param);
            param = new global::Oracle.ManagedDataAccess.Client.OracleParameter();
            param.ParameterName = "DATA";
            param.DbType = global::System.Data.DbType.Object;
            param.OracleDbTypeEx = global::Oracle.ManagedDataAccess.Client.OracleDbType.RefCursor;
            param.Direction = global::System.Data.ParameterDirection.Output;
            param.IsNullable = true;
            param.SourceColumn = null;
            cmd.Parameters.Add(param);
            if ((DATESTART.HasValue == true))
            {
                cmd.Parameters[0].Value = ((System.DateTime)(DATESTART.Value));
            }
            else
            {
                cmd.Parameters[0].Value = global::System.DBNull.Value;
            }
            if ((DATEEND.HasValue == true))
            {
                cmd.Parameters[1].Value = ((System.DateTime)(DATEEND.Value));
            }
            else
            {
                cmd.Parameters[1].Value = global::System.DBNull.Value;
            }

           // OracleDataAdapter调用了cmd的方法,并且把读取出来的数据填充到DataSet上。(可以自己定义一个类ClassA和ClassB,ClassA也去调用cmd的方法,读取数据,把数据填充到ClassB中,比如List<ClassB>。至于调用了cmd的方法叫什么,请百度一下,比如C# Oracle如何一行行读取查询结果:OracleDataReader  reader= cmd.ExecuteReader();)

            OracleDataAdapter da = new OracleDataAdapter(cmd);

            DataSet ds = new DataSet();
            da.Fill(ds);//把一个或者多个查询结果集填充到DataSet

            if (((cmd.Parameters[2].Value == null)
                        || (cmd.Parameters[2].Value.GetType() == typeof(global::System.DBNull))))
            {
                DATA = global::System.DBNull.Value;
            }
            else
            {
                DATA = ((object)(cmd.Parameters[2].Value));
            }


            GridView1.DataSource = ds.Tables[0];
            GridView1.DataBind();

        }
 

----EF调用Oracle存储过程,参考 https://www.cnblogs.com/lizichao1991/p/6867331.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值