C#处理oracle lob的例子

  protected void BindData1()
    {
        OracleConnection orcn = new OracleConnection("User ID=wesoftwcp; Password=wesoft; Data Source=oradb");
        orcn.Open();

        string MyData = "";
        StreamReader rs = new StreamReader(@"c:/1.txt");
        MyData = rs.ReadToEnd();
        rs.Close();
        //OracleConnection orcn = new OracleConnection("User ID=wesoftwcp; Password=wesoft; Data Source=oradb");
        //orcn.Open();

        OracleType lobtype = OracleType.Clob; //如果是blob这里改成OracleType.blob
        string CreateTempBlob = "DECLARE A " + lobtype + "; " +
            "BEGIN " +
            "DBMS_LOB.CREATETEMPORARY(A, FALSE); " +
            ":LOC := A; " +
            "END;";


        OracleTransaction transaction = orcn.BeginTransaction();
        OracleParameter[] param = new OracleParameter[1];
        param[0] = new OracleParameter("LOC", OracleType.Clob);
        //OracleHelper.CacheParameter(CreateTempBlob,param);

        OracleCommand cmdTemp = new OracleCommand(CreateTempBlob, orcn);

        param[0].Direction = ParameterDirection.Output;
        //OracleHelper.ExecuteNonQuery(transaction,CommandType.Text,CreateTempBlob,param);
        cmdTemp.Parameters.Add(param[0]);
        cmdTemp.Transaction = transaction;
        cmdTemp.ExecuteNonQuery();
        OracleLob tempLob = (OracleLob)param[0].Value;

        //将文件内容传入Blob变量
        tempLob.BeginBatch(OracleLobOpenMode.ReadWrite);
        byte[] bytes = System.Text.Encoding.Unicode.GetBytes(MyData);
        tempLob.Write(bytes, 0, bytes.Length);
        tempLob.Position = 0;
        transaction.Commit();
        //orcn.Close();

       

      
       // OracleLob lob = GetTempCLobs(MyData);
       
        OracleCommand cmd = orcn.CreateCommand();
        //string sql = "update T set contentclob=:P_clob where id=0";

        cmd.CommandType = CommandType.StoredProcedure;
        cmd.Parameters.Add(new OracleParameter("P_clob", OracleType.Clob));
        cmd.Parameters["P_clob"].Direction = ParameterDirection.Input;
        //Response.Write();
        cmd.Parameters["P_clob"].Value =tempLob;
        cmd.CommandText = "test";
        int i=cmd.ExecuteNonQuery();
        Response.Write("成功");

    }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值