zoukankan      html  css  js  c++  java
  • C#操作Oracle BLOB字段的写入读取方法

    1.写入BLOB

    string file_name = "D:\\20080523.jpg";
    string conn_str = "Provider=OraOLEDB.Oracle.1;Password=agoodjob;Persist Security Info=True;User ID=ams;Data Source=ims;Extended Properties=";//Provider必須用OraOLEDB.Oracle.1
    OleDbConnection cn = new OleDbConnection(conn_str);
    cn.Open();

    OleDbCommand cmd = new OleDbCommand("UPDATE BLOB SET PHOTO = ? ",cn);
    cmd.Parameters.Add("PHOTO",OleDbType.Binary);

    FileStream fs = new FileStream(file_name, FileMode.OpenOrCreate, FileAccess.Read);
    byte[] MyData= new byte[fs.Length];
    fs.Read(MyData, 0, System.Convert.ToInt32(fs.Length));
    fs.Close();

    cmd.Parameters["PHOTO"].Value = MyData;
    try
    {
    int result = cmd.ExecuteNonQuery();
    if(result<1)
    {
    OleDbCommand cmd1 = new OleDbCommand(" INSERT INTO BLOB (PHOTO) VALUES ( ? )",cn);
    cmd1.Parameters.Add("PHOTO",OleDbType.Binary);
    cmd1.Parameters["PHOTO"].Value = MyData;
    result = cmd1.ExecuteNonQuery();
    }
    }
    catch(Exception e1)
    {
    Page.RegisterStartupScript("","<script language='javascript'>alert('"+e1.Message+"')</script>");
    }
    finally
    {
    cn.Close();
    }

    2.读取BLOB

    string conn_str = "Provider=OraOLEDB.Oracle.1;Password=agoodjob;Persist Security Info=True;User ID=ams;Data Source=ims;Extended Properties=";//Provider必須用OraOLEDB.Oracle.1

    OleDbDataAdapter da = new OleDbDataAdapter();
    DataSet ds = new DataSet();
    OleDbConnection conn = new OleDbConnection(conn_str);
    OleDbCommand cmd = new OleDbCommand("SELECT PHOTO FROM WEB_DB.USERS WHERE USER_ID = 1", conn);
    da.SelectCommand = cmd;
    cmd.Connection.Open();
    da.Fill(ds);

    byte[] img = new byte[0];
    DataRow dr;
    dr = ds.Tables[0].Rows[0];

    if (!ds.Tables[0].Rows[0]["PHOTO"].ToString().Equals(""))
    {
    img = (byte[])dr["PHOTO"];
    }

    Response.ContentType= "image/*";
    Response.BinaryWrite (img);

    conn.Close();

  • 相关阅读:
    Cause: java.sql.SQLIntegrityConstraintViolationException: Duplicate entry '1288372549423476738' for key 'PRIMARY'
    环形数组循环
    less命令
    ln命令
    Vue中$refs的理解
    cut命令
    除数博弈
    find命令
    file命令
    最长公共前缀
  • 原文地址:https://www.cnblogs.com/tracy/p/2089200.html
Copyright © 2011-2022 走看看