如题,求C#中操作oracle数据库中clob类型数据的相关代码,第一次接触,一点也不会啊,不知道如何写,给点参考代码,谢了

解决方案 »

  1.   

     string file_name = this.filepath1_txt.Text.ToString();//图片路径
                Bitmap bmp = new Bitmap(file_name);
                FileInfo fi = new FileInfo(file_name);            int w = bmp.Width;//宽 
                int h = bmp.Height;//高 
                long s = fi.Length;
             
                string conn_str = "Provider=OraOLEDB.Oracle.1;Password=123;Persist Security Info=True;User ID=123;Data Source=123;Extended Properties=";
                OleDbConnection cn = new OleDbConnection(conn_str);
                cn.Open();
                OleDbCommand cmd;
                cmd = new OleDbCommand("insert into Table_1(fphoto) values(:FPHOTO1)", cn);
     
                cmd.Parameters.Add("FPHOTO", 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["FPHOTO"].Value = MyData;            int result = cmd.ExecuteNonQuery();
                if (result > 0)
                {
                    MessageBox.Show("图片上传成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                   
                }
                else
               {
                    MessageBox.Show("图片上传失败!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }           
            cmd.Dispose();
                cn.Close();这是上传图片的  希望对楼主 有帮助
      

  2.   

    string sql = "INSERT INTO TABLE1(img) values(:IMAGE)";
                        byte[] img = ***;//byte数据
                        using (OracleCommand cmd = (OracleCommand)(session.Connection.CreateCommand()))
                        {
                            cmd.CommandText = sql;
                            cmd.Parameters.Add(":IMAGE", OracleType.Blob, img.Length).Value = img;                        cmd.ExecuteNonQuery();
                            cmd.Parameters.Clear();
                        }插入是类似这样吧,sql是随手写的,不知道有没错
    查的跟普通查询没什么区别
      

  3.   

     写
     OracleCommand cmd = new OracleCommand();
                cmd.Connection = con;
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.InitialLOBFetchSize = 65536;
                cmd.CommandText = "PUBLISHINFO";
                cmd.Parameters.Add("IROWID", OracleDbType.Varchar2).Value = infoRowid;
                cmd.Parameters.Add("PUser", OracleDbType.Varchar2).Value = UserManager.me.UserName;
                cmd.Parameters.Add(":DId", OracleDbType.Varchar2).Value = DeptId;
                cmd.Parameters.Add("IType", OracleDbType.Varchar2).Value = infoType;
                cmd.Parameters.Add("ITitle", OracleDbType.Varchar2).Value = infoTitle;
                OracleClob icontent = new OracleClob(con);
                icontent.Append(infoContent.ToCharArray(), 0, infoContent.Length);
                cmd.Parameters.Add("IContent", OracleDbType.Clob).Value = icontent;
                cmd.Parameters.Add("Files", OracleDbType.Varchar2).Value = files;
                OracleParameter fileRowIDParameter = cmd.Parameters.Add("RID", OracleDbType.Varchar2, 256);
                fileRowIDParameter.Direction = ParameterDirection.Output;
                cmd.ExecuteNonQuery();
                icontent.Close();读
    FileStream saveFile = new FileStream(fileName, FileMode.Create, FileAccess.Write, FileShare.Write, 65536);
                OracleTransaction tx = con.BeginTransaction();
                OracleCommand cmd = new OracleCommand();
                cmd.Connection = con;
                cmd.InitialLOBFetchSize = 65536;
                cmd.CommandText = "SELECT FileBinary FROM InfoFile WHERE ROWID='" + rowid + "' FOR UPDATE";
                OracleDataReader dr = cmd.ExecuteReader();
                byte[] buffer = new byte[fileLength];
                //int readLength = 0;
                if (dr.Read())
                {
                    OracleBlob ob = dr.GetOracleBlob(0);
                    ob.Read(buffer, 0,fileLength);
                    ob.Flush();
                    //readLength = (int)dr.GetBytes(0, 0, buffer, 0, fileLength);
                    if (ob.Length > 0)
                        saveFile.Write(buffer, 0, fileLength);
                    ob.Close();
                }
                dr.Close();
                tx.Commit();
                saveFile.Close();
      

  4.   

    和MSSQL的IMAGE TEXT字段一样的读取办法了