新建保存数据的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");
}