高手赐教,c#的winform中,从oracle数据库中存取图片问题

解决方案 »

  1.   

    说的详细些,我的代码是
    public void SavePicture(out byte[] picbyte)
    {
    OpenFileDialog myDialog=new OpenFileDialog();
    Stream ms;
    picbyte=null;

    if (myDialog.ShowDialog()==DialogResult.OK)
    {

    if ((ms=myDialog.OpenFile())!=null)
    {
    picbyte=new byte[ms.Length];
    ms.Position=0;

    int n=ms.Read(picbyte,0,int.Parse(ms.Length.ToString()));
    ms.Close();

    }
    } }
      

  2.   

    OracleConnection mConn;
    public  void SavePicture(int ID,string TEST_NAME)
    {
    string sConn="data source=mestest;user id=spc;password=spc;Max Pool Size=75;Min Pool Size=1";
     mConn=new OracleConnection(sConn);
    mConn.Open();
    DataTable m_Dt=new DataTable();
    string m_Sql;
    try
    {
    m_Sql="INSERT INTO SPC.TEST(TEST_ID,TEST_NAME,PICTURE) ";
    m_Sql=m_Sql+" values("+ID;
    m_Sql=m_Sql+",'"+TEST_NAME+"'";
    m_Sql=m_Sql+",empty_blob())";
    OracleCommand mCmd=new OracleCommand(m_Sql,mConn);
    mCmd.ExecuteNonQuery(); byte[] blob;
    OpenFileDialog myDialog=new OpenFileDialog();
    Stream fs;
    blob=null;
    if (myDialog.ShowDialog()==DialogResult.OK)
    {
    if ((fs=myDialog.OpenFile())!=null)
    {
    blob=new byte[fs.Length];
    int n=fs.Read(blob,0,int.Parse(blob.Length.ToString()));
    fs.Close();
    }
    } SavePhoto(ID,blob,"TEST_ID","PICTURE","SPC.TEST");
    }
    catch(Exception ex)
    {
    System.Console.WriteLine(""+ex);
    throw ex;
    }
    finally
    {
    mConn.Close();
    }
    } /// <summary>
    /// save photo into db
    /// 保存图片到数据库(2005-5-14)
    /// </summary>
    /// <param name="data_id">ID的数值</param>
    /// <param name="p_Blob">图片BLOB</param>
    /// <param name="id">ID键</param>
    /// <param name="photo">图片键</param>
    /// <param name="tablename">表名</param>
    public void SavePhoto(int data_id,byte[] p_Blob,string id,string photo,string tablename)
    {
    try
    {
    OracleDataAdapter photoAdapter;
    DataSet photoDataSet;
    DataTable photoTable;
    DataRow photoRow; photoAdapter = new OracleDataAdapter(
    "SELECT "+id+","+photo+"" +
    "  FROM "+tablename+" WHERE "+id+" = " + data_id,mConn); photoDataSet= new DataSet(tablename);
    photoAdapter.UpdateCommand = new OracleCommand
    ("UPDATE "+tablename+" SET " +
    ""+photo+" = :vPHOTO " +
    "WHERE "+id+" = :vID",mConn);
    photoAdapter.UpdateCommand.Parameters.Add(":vPHOTO",
    OracleType.Blob, p_Blob.Length, photo);
    photoAdapter.UpdateCommand.Parameters.Add(":vID",
    OracleType.Int32, 0, id); photoAdapter.MissingSchemaAction = MissingSchemaAction.AddWithKey; // Configures the schema to match with Data Source
    photoAdapter.FillSchema(photoDataSet, SchemaType.Source, tablename); // Fills the DataSet with 'drivers' table data
    photoAdapter.Fill(photoDataSet,tablename); // Get the current driver ID row for updation
    photoTable = photoDataSet.Tables[tablename];
    photoRow = photoTable.Rows.Find(data_id); // Start the edit operation on the current row in
    // the 'drivvers' table within the dataset.
    photoRow.BeginEdit();
    // Assign the value of the Photo if not empty
    if (p_Blob.Length != 0)
    {
    photoRow[photo] = p_Blob;
    }
    // End the editing current row operation
    photoRow.EndEdit(); // Update the database table 'drivers'
    photoAdapter.Update(photoDataSet,tablename); }
    catch(Exception e)
    {
    throw e;
    }
    }