C# 把文件保存进orcale 并读取出来还原

新建保存数据的oracle数据表:

  CREATE TABLE "FILE_DB" 
   ( "FILEID" VARCHAR2(20 BYTE), 
"FILENAME" VARCHAR2(100 BYTE), 
"FILEBLOB" BLOB
   )


 //下面是把文件保存进oracle的代码

   //把文件到数据库
        public void  SaveFiletoDB(string filename)
        {
           
            OracleConnection ocn =   new OracleConnection(“连接字符");
            ocn.Open();
            string sql = "insert into FILE_DB (FILEID,FILENAME,FILEBLOB) values (:FILEID,:FILENAME,:FILEBLOB)" ;
            OracleCommand cmd = new OracleCommand(sql, ocn);
            FileStream fs = File.OpenRead(filename);
            byte[] b = new byte[fs.Length];
            fs.Read(b, 0, b.Length);
            fs.Close();
            cmd.Parameters.Add(":FILEID", OracleDbType.Varchar2).Value = "test12";
            cmd.Parameters.Add(":FILENAME", OracleDbType.Varchar2).Value = filename;
            cmd.Parameters.Add(":FILEBLOB", OracleDbType.Blob).Value = b;
            cmd.ExecuteNonQuery();
            ocn.Close();
        }
 


 //从oracle读出并还原文件

        public string download(string fileid)
        {


           OracleConnection ocn =   new OracleConnection(“连接字符");

      ocn.Open();
            OracleDataAdapter odp = new OracleDataAdapter("select * from FILE_DB where FILEID='" + fileid + "'", ocn);
            DataTable odt = new DataTable();
             odp.Fill(odt);
           //  DataTable odt = o_ac.GetDatatable("select * from FILE_DB where FILEID='" + fileid + "'");
             byte[] objFileBuffer = (byte[])odt.Rows[0]["FILEBLOB"];
             FileStream objFs;
             BinaryWriter objBw;
             string fileName = odt.Rows[0]["FILENAME"].ToString();//文件名
             objFs = new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.Write);
             objBw = new BinaryWriter(objFs);
             objBw.Write(objFileBuffer, 0, objFileBuffer.Length);
             objBw.Flush();
             objBw.Close();
             objFs.Close();
             return fileName;
       
        }


//调用代码

 protected void Button1_Click(object sender, EventArgs e)
        {
            SaveFiletoDB(@"d:\123.ppt");
        }


        protected void Button2_Click(object sender, EventArgs e)
        {
            download("test12");
        }

你可能感兴趣的:(C# 把文件保存进orcale 并读取出来还原)