zoukankan      html  css  js  c++  java
  • Operate blob data in Oracle via C#

    oracle table:

    CREATE TABLE "SCOTT"."TEST_BLOB"
       (    "NAME" VARCHAR2(200),
        "PHOTO" BLOB
       )

    Operating Code:

    private static void OprBlob()
            {
                var connStr = ConfigurationManager.ConnectionStrings["ora"].ConnectionString;

                using (OracleConnection conn = new OracleConnection())
                {
                    conn.ConnectionString = connStr;
                    conn.Open();
                    var cmd = conn.CreateCommand();
                    cmd.CommandText = @"
    begin
    insert into test_blob values(:1,:2);
    end;
    ";;
                    byte[] photo;
                    using (var fileStrm = new FileStream(@"D:abc.png", FileMode.Open))
                    {
                        photo = new byte[fileStrm.Length];
                        fileStrm.Read(photo, 0, photo.Length);
                    }
                    cmd.Parameters.Add("name", OracleDbType.NVarchar2,"Phil",ParameterDirection.Input);
                    cmd.Parameters.Add("photo", OracleDbType.Blob, photo, ParameterDirection.Input);

                    cmd.ExecuteNonQuery();
                }

                using (OracleConnection conn = new OracleConnection())
                {
                    conn.ConnectionString = connStr;
                    conn.Open();
                    var cmd = conn.CreateCommand();
                    cmd.CommandText = @"
    begin
    select photo into :1 from test_blob where rownum =1;
    end;
    "; ;

                    var photoParam = cmd.Parameters.Add("p", OracleDbType.Blob, ParameterDirection.Output);

                    cmd.ExecuteNonQuery();

                    byte[] photo2 = (byte[])((Oracle.DataAccess.Types.OracleBlob) photoParam.Value).Value;

                    using (var fileStrm = new FileStream(@"D:phil.png",FileMode.CreateNew))
                    {
                        fileStrm.Write(photo2,0,photo2.Length);
                        fileStrm.Flush(true);
                    }
                }


            }

  • 相关阅读:
    STM32的低功耗模式
    C语言的面向对象技术
    SDIO学习
    读十倍效率开发者有感
    三极管
    压敏电阻
    freertos之任务
    tsar采集数据原理
    NTP学习路线
    使用awk提取字符串中的数字或字母
  • 原文地址:https://www.cnblogs.com/philzhou/p/3275315.html
Copyright © 2011-2022 走看看