利用数据库存取文件

来源:互联网 发布:淘宝联盟和一淘 知乎 编辑:程序博客网 时间:2024/05/16 19:56
[WebMethod(Description = "将文件以二进制流的形式保存到数据库中!")]    public void saveDocuments(string filePath,string contractID)    {        ConnectDB();        con.Open();        try{        FileStream fs = new FileStream(filePath,FileMode.OpenOrCreate,FileAccess.Read);        byte[] blobValue = new byte[fs.Length];//文件在oracle数据库中存放为BLOB类型        fs.Read(blobValue, 0, System.Convert.ToInt32(fs.Length));        fs.Close();        OracleCommand com = con.CreateCommand();        string sql = "update fuel_contract_inf set contract=:conTract where contractid = '" + contractID + "'";        com.CommandText = sql;        com.CommandType = CommandType.Text;        OracleParameter op = com.Parameters.Add("conTract", OracleType.Blob);        op.Direction = ParameterDirection.Input;        op.Value = blobValue;        com.ExecuteNonQuery();        }catch(Exception ex)        {MessageBox.Show(ex.Message);}        finally{con.Close();}    }    [WebMethod(Description = "将数据库中的二进制流数据读到一个文件中!")]    public void readDocuments(string filePath,string sql)    {        ConnectDB();        com.CommandText = sql;        con.Open();        try{        OracleDataReader reader = com.ExecuteReader();        if (reader.Read())        {            byte[] blobvalue = new byte[(reader.GetBytes(0, 0, null, 0, int.MaxValue))];            reader.GetBytes(0, 0, blobvalue, 0, blobvalue.Length);            FileStream fs = new FileStream(filePath, FileMode.Create, FileAccess.Write);            fs.Write(blobvalue, 0, blobvalue.Length);            fs.Close();        }        reader.Close();        }catch(Exception ex)        {MessageBox.Show(ex.Message);}        finally{con.Close();}    }