VS Oracleドライバによる接続データベースによる画像へのアクセス操作(Oracle.DataAccess.Client.dll)

3765 ワード

  Oracle.DataAccess.Client.dll      ,   Oracle       64 ,        :
          “Oracle.DataAccess, Version=2.112.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342”         。            
           Oracle        ,    :    ,  【  】->【  】,       x64  。
 
  
            //           
            Byte[] imgbyte = null;
            string imagPath = @"C:\Users\Public\Pictures\Sample Pictures\aaa.jpg";
            using(FileStream fs = new FileStream(imagPath, FileMode.Open, FileAccess.Read))
            {
                imgbyte = new Byte[fs.Length];
                fs.Read(imgbyte, 0, imgbyte.Length);
                fs.Close();
            }
            
            //  Oracle            ,Oracle.DataAccess.Client.dll  Oracle        (...\dbhome_1\ODP.NET\bin\2.x)  
            string connString = "Data Source = datasource;User ID = userid;Password = password;";
            //string connString = "Data Source = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = ip)(PORT = 1521))(CONNECT_DATA = (SERVER = DEDICATED)(SERVICE_NAME = servername)));User ID = userid;Password = password;";
            Oracle.DataAccess.Client.OracleConnection con = new Oracle.DataAccess.Client.OracleConnection(connString);
            Oracle.DataAccess.Client.OracleCommand cmd = new Oracle.DataAccess.Client.OracleCommand();
            cmd.CommandText = "insert into tbl_picture(id,picture,createtime) values(666,:picture,sysdate)";
            cmd.Parameters.Add("picture", OracleDbType.Blob).Value = imgbyte;
            cmd.Connection = con;
            try
            {
                con.Open();
                //       
                int count = cmd.ExecuteNonQuery();
                Console.WriteLine("      ,"+count+"    !");

                //                 
                cmd.CommandText = "select picture from tbl_picture where id = 666";
                Oracle.DataAccess.Client.OracleDataReader reader = cmd.ExecuteReader();
                if (reader.Read())
                {
                    byte[] iBytes = reader.GetFieldValue(0);
                    Console.WriteLine("          !");
                    //    
                    string filePath = @"C:\TestPicture\";
                    if (!Directory.Exists(filePath)) Directory.CreateDirectory(filePath);
                    string fileName = filePath+"aaafb.jpg";
                    using (FileStream fss = new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.ReadWrite))
                    {
                        fss.Write(iBytes, 0, iBytes.Length);
                        fss.Close();
                        Console.WriteLine("       ,  :"+filePath);
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("    :" + ex.Message);
            }
            finally
            {
                con.Close();
            }