读取本地文件,存入数据库blob字段。
try
{
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Filter = "*.*|*.*";
openFileDialog.CheckFileExists = true;
openFileDialog.Title = "选择上传的文件";
if (openFileDialog.ShowDialog() != System.Windows.Forms.DialogResult.OK)
{
return;
}
FileStream fileStream = new FileStream(
openFileDialog.FileName, FileMode.Open, FileAccess.Read);
byte[] fileData = new byte[fileStream.length + 1];
fileStream.Read(fileData, 0, (int)fileStream.Length);
string sql = "select * from TABLE_NAME where id = '" + id + "'";
DataSet ds = OA.RsGet(sql, null);
DataRow row;
if (ds.Tables[0].Rows.Count > 0)
{
row = ds.Tables[0].Rows[0];
}
else
{
row = ds.Tables[0].NewRow();
row["ID"] = Guid.NewGuid().ToString("N");
ds.Tables[0].Rows.Add(row);
}
row["FILE"] = fileData;
row["otherField"] = roadWidth;
if (OA.RsUpdate(ds) > 0)
{
MessageBox.Show("保存成功!");
}
}
catch(Exception exc)
{
MessageBox.Show("保存出错!请检查数据。\n" + exc.Message);
}
读取数据库blob字段,存成本地文件。
/// <summary>
/// 读取ORACLEBLOB字段到文件,返回文件名 Add by ZhaoYong |2012-03-21|
/// </summary>
/// <param name="idValue">索引值</param>
/// <param name="idField">索引字段名称</param>
/// <param name="table">要查询的表名称</param>
/// <param name="blobField">存放文件的字段名称</param>
/// <param name="outFileFullName">保存到本地的文件名</param>
/// <returns></returns>
public static bool ReadBlobToFile(string idValue, string idField, string table, string blobField, string outFileFullName)
{
int PictureCol = 0;
outFileFullName = outFileFullName.Trim();
try
{
OracleCommand cmd = new OracleCommand("Select " + blobField + " From " + table +
" Where " + idField + "='" + idValue + "'", OracleDb.OracleDb.Connection);
OracleDataReader myReader = cmd.ExecuteReader();
myReader.Read();
if (myReader.HasRows == false)
{
return false;
}
byte[] b = new byte[myReader.GetBytes(PictureCol, 0, null, 0, int.MaxValue) - 1];
myReader.GetBytes(PictureCol, 0, b, 0, b.Length);
myReader.Close();
System.IO.FileStream fileStream = new System.IO.FileStream(
outFileFullName, System.IO.FileMode.Create, System.IO.FileAccess.Write);
fileStream.Write(b, 0, b.Length);
fileStream.Close();
}
catch
{
return false;
}
return true;
}