由于oracle中的各种字符数据类型最大不超过4000字,所以使用大字段是必须的。
1.引用oracle 客户端
这里是将一个text文件类容写入blob字段里
代码
1
public
void
WriteLobExample(OracleCommand cmd)
2 {
3 cmd.Transaction = cmd.Connection.BeginTransaction();
4 cmd.CommandText = " SELECT * FROM tablewithlobs FOR UPDATE " ;
5 OracleDataReader reader = cmd.ExecuteReader();
6 using (reader)
7 {
8 reader.Read();
9 OracleLob blob = reader.GetOracleLob( 1 );
10 FileStream fs = new FileStream( " f:\\1.txt " , FileMode.Open);
11 byte [] buffer = new byte [fs.Length];//文件大时存在问题,不能取出全部。
12 fs.Read(buffer, 0 ,Convert.ToInt32((fs.Length)));//文件大时转为int溢出。
13 blob.Write(buffer, 0 ,Convert.ToInt32(fs.Length));
14 // blob.Write(buffer, 0, 2);
15 // blob.Position = 0;
16 // Console.WriteLine(blob.LobType + ".Write(" + buffer + ", 0, 2) => " + blob.Value);
17 cmd.Transaction.Commit();
18 }
2 {
3 cmd.Transaction = cmd.Connection.BeginTransaction();
4 cmd.CommandText = " SELECT * FROM tablewithlobs FOR UPDATE " ;
5 OracleDataReader reader = cmd.ExecuteReader();
6 using (reader)
7 {
8 reader.Read();
9 OracleLob blob = reader.GetOracleLob( 1 );
10 FileStream fs = new FileStream( " f:\\1.txt " , FileMode.Open);
11 byte [] buffer = new byte [fs.Length];//文件大时存在问题,不能取出全部。
12 fs.Read(buffer, 0 ,Convert.ToInt32((fs.Length)));//文件大时转为int溢出。
13 blob.Write(buffer, 0 ,Convert.ToInt32(fs.Length));
14 // blob.Write(buffer, 0, 2);
15 // blob.Position = 0;
16 // Console.WriteLine(blob.LobType + ".Write(" + buffer + ", 0, 2) => " + blob.Value);
17 cmd.Transaction.Commit();
18 }
这里是将blob字段取出来显示在text控件上。
代码
1
private
void
button2_Click(
object
sender, EventArgs e)
2 {
3 OracleConnection conn = new OracleConnection( " Data Source=testblob;User Id=test;Password=test " );
4 conn.Open();
5 OracleCommand cmd = conn.CreateCommand();
6 cmd.Transaction = cmd.Connection.BeginTransaction();
7 cmd.CommandText = " SELECT * FROM tablewithlobs FOR UPDATE " ;
8 OracleDataReader reader = cmd.ExecuteReader();
9 using (reader)
10 {
11 reader.Read();
12 OracleLob blob = reader.GetOracleLob( 1 );
13 int length = Convert.ToInt32(blob.Length);
14 // FileStream fs = new FileStream("f:\\1.doc", FileMode.Open);
15 byte [] buffer = new byte [length];
16 blob.Read(buffer, 0 , length);
17 // byte b = 41;
18 t.Text = System.Text.Encoding.Default.GetString(buffer);
19 // blob.Write(buffer, 0, 2);
20 // blob.Position = 0;
21 // Console.WriteLine(blob.LobType + ".Write(" + buffer + ", 0, 2) => " + blob.Value);
22 cmd.Transaction.Commit();
23 }
24 }
2 {
3 OracleConnection conn = new OracleConnection( " Data Source=testblob;User Id=test;Password=test " );
4 conn.Open();
5 OracleCommand cmd = conn.CreateCommand();
6 cmd.Transaction = cmd.Connection.BeginTransaction();
7 cmd.CommandText = " SELECT * FROM tablewithlobs FOR UPDATE " ;
8 OracleDataReader reader = cmd.ExecuteReader();
9 using (reader)
10 {
11 reader.Read();
12 OracleLob blob = reader.GetOracleLob( 1 );
13 int length = Convert.ToInt32(blob.Length);
14 // FileStream fs = new FileStream("f:\\1.doc", FileMode.Open);
15 byte [] buffer = new byte [length];
16 blob.Read(buffer, 0 , length);
17 // byte b = 41;
18 t.Text = System.Text.Encoding.Default.GetString(buffer);
19 // blob.Write(buffer, 0, 2);
20 // blob.Position = 0;
21 // Console.WriteLine(blob.LobType + ".Write(" + buffer + ", 0, 2) => " + blob.Value);
22 cmd.Transaction.Commit();
23 }
24 }