同時寫oracle的CLOB和BLOB欄位的方法

來源:互聯網
上載者:User

 有些是測試用的資料,不過我覺得功能上基本上是實現了。 順便也附上單獨插入CLOB或是BLOB的方法。我的也是在上面稍加改造弄出來的。

能同時插入CLOB和BLOB的
 1/**//// <summary>
 2        /// 同時寫CLOB和BLOB
 3        /// </summary>
 4        /// <param name="bt">BLOB欄位存的值</param>
 5        /// <param name="clobbt">CLOB欄位存的值</param>
 6        /// <returns></returns>
 7        private bool InsertBlobOrClob(byte[] bt,byte[] clobbt)
 8        {            
 9            OracleConnection connection = new OracleConnection(ConStr);
10                connection.Open();
11                OracleTransaction transaction = connection.BeginTransaction();
12                OracleCommand command = connection.CreateCommand();
13                command.Transaction = transaction;
14                command.CommandText = "declare xx blob;yy clob; begin dbms_lob.createtemporary(xx, false, 0);dbms_lob.createtemporary(yy, false, 0); :tempblob := xx;:tempclob := yy; end;";
15                command.Parameters.Add(new OracleParameter("tempblob", OracleType.Blob)).Direction = ParameterDirection.Output;
16                command.Parameters.Add(new OracleParameter("tempclob", OracleType.Clob)).Direction = ParameterDirection.Output;
17                command.ExecuteNonQuery();
18
19                OracleLob tempLob = (OracleLob)command.Parameters[0].Value;
20                byte[] tempbuff = bt;
21                tempLob.BeginBatch(OracleLobOpenMode.ReadWrite);
22                tempLob.Write(tempbuff,0,tempbuff.Length);
23                tempLob.EndBatch();
24                OracleLob tempLob2 = (OracleLob)command.Parameters[1].Value;
25                byte[] tempbuff2 = clobbt;
26                tempLob2.BeginBatch(OracleLobOpenMode.ReadWrite);
27                tempLob2.Write(tempbuff2,0,tempbuff2.Length);
28                tempLob2.EndBatch();
29                command.Parameters.Clear();
30                command.CommandText = "insert into BLOBCLOB (案例編號,本文,內容) values ('caseno',:ImportCoc,:ImportDoc)";
31                command.CommandType = CommandType.Text;  
32                
33                command.Parameters.Add(new OracleParameter("ImportDoc", OracleType.Blob)).Value = tempLob;
34                command.Parameters.Add(new OracleParameter("ImportCoc", OracleType.Clob)).Value = tempLob2;
35                int num=command.ExecuteNonQuery();
36                transaction.Commit();
37                connection.Close();
38            return (num>=1);
39        }

單獨插入的

單獨插入的
 1OracleConnection connection = new OracleConnection("server=MyServer; integrated security=yes;");
 2connection.Open();
 3OracleTransaction transaction = connection.BeginTransaction();
 4OracleCommand command = connection.CreateCommand();
 5command.Transaction = transaction;
 6command.CommandText = "declare xx blob; begin dbms_lob.createtemporary(xx, false, 0); :tempblob := xx; end;";
 7command.Parameters.Add(new OracleParameter("tempblob", OracleType.Blob)).Direction = ParameterDirection.Output;
 8command.ExecuteNonQuery();
 9OracleLob tempLob = (OracleLob)command.Parameters[0].Value;
10byte[] tempbuff = new byte[10000];
11tempLob.BeginBatch(OracleLobOpenMode.ReadWrite);
12tempLob.Write(tempbuff,0,tempbuff.Length);
13tempLob.EndBatch();
14command.Parameters.Clear();
15command.CommandText = "MyTable.MyProc";
16command.CommandType = CommandType.StoredProcedure;  
17command.Parameters.Add(new OracleParameter("ImportDoc", OracleType.Blob)).Value = tempLob;
18command.ExecuteNonQuery();
19transaction.Commit();

給自己做個記錄。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.