新建保存数据的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#将文件保存到Oracle数据库的BLOB字段中,以及如何从数据库中读取文件并还原。通过创建名为FILE_DB的数据表,存储文件ID、文件名和文件内容。然后提供两个方法,SaveFiletoDB用于存文件,download用于根据文件ID下载并恢复文件。示例中包含了按钮事件触发这些方法的代码。
5239

被折叠的 条评论
为什么被折叠?



