Oracle中 表名: TBExam
字段: ID(varchar类型) Result(BLOB类型)TBExam中已经存在的 记录
ID Result(BLOB类型)
001 写不进来
-------------- 想实现的 效果: ID 为 001 的 Result值 改成 终于,写进来了------------
我的做法如下,但是没有成功
byte[] b = System.Text.Encoding.Unicode.GetBytes("终于,写进来了");
mySql="update TBExam set Result=b where ID=001"
OracleCommand cmd = new OracleCommand(mySql, conn);
cmd.ExecuteNonQuery();
------------
在线等高手 解答~~~要求是 C#编程实现的~~~---------关于分值
在C#社区
http://topic.csdn.net/u/20101212/15/88d3ee91-ef10-4bbe-88a8-ebbcf89ea3bc.html
发了个100分的 求助帖, 问题尚未被解决。 没有足够分在这里开个100分了--!
如果哪位高手在 这能解决 请在
http://topic.csdn.net/u/20101212/15/88d3ee91-ef10-4bbe-88a8-ebbcf89ea3bc.html
发个回复~~ 从那里额外给分。
如果使用BLOB来存储,试试:
mySql="update TBExam set Result=rawtohex("+"终于,写进来了"+") where ID=001"
mySql="update TBExam set Result=rawtohex('"+"终于,写进来了"+"') where ID=001"
测试未通过~~
3x anyway先去吃饭~~~
using System;
using System.Collections.Generic;
using System.Text;// using oracle ado.net instead of MS ado.net for oracle
using Oracle.DataAccess.Client;
using Oracle.DataAccess.Types;namespace oracledemo
{
class TestOracle
{ OracleConnection _conn; public void test()
{ string connstr = "User Id=scott;Password=tiger;Data Source=ora102"; try
{
_conn = new OracleConnection(connstr);
_conn.Open();
}
catch (Exception ex)
{
Console.WriteLine("Error: {0}", ex.Message);
return;
} // setup StringBuilder blr;
OracleCommand cmd = new OracleCommand("", _conn); blr = new StringBuilder();
blr.Append("DROP TABLE TBExam");
cmd.CommandText = blr.ToString();
try
{
cmd.ExecuteNonQuery();
}
catch (Exception e)
{
Console.WriteLine("Warning: {0}", e.Message);
} blr = new StringBuilder();
blr.Append("CREATE TABLE TBExam(ID varchar(32) PRIMARY KEY,");
blr.Append("story CLOB, Result BLOB)");
cmd.CommandText = blr.ToString();
try
{
cmd.ExecuteNonQuery();
}
catch (Exception e)
{
Console.WriteLine("Error: {0}", e.Message);
} blr = new StringBuilder();
blr.Append("INSERT INTO TBExam values(");
blr.Append("'001',");
blr.Append("'This is a long story. Once upon a time ...',");
blr.Append("empty_blob())");
cmd.CommandText = blr.ToString();
try
{
cmd.ExecuteNonQuery();
}
catch (Exception e)
{
Console.WriteLine("Error: {0}", e.Message);
} // update the blob value
string res = "终于,写进来了";
byte[] b = System.Text.Encoding.Unicode.GetBytes(res); cmd.Dispose();
OracleTransaction txn = _conn.BeginTransaction();
cmd = new OracleCommand("", _conn);
try
{ cmd.CommandText = "select result from TBExam where id='001' for update";
OracleDataReader reader = cmd.ExecuteReader();
reader.Read();
OracleBlob blob = reader.GetOracleBlob(0);
blob.Write(b, 0, b.Length);
blob.Flush();
txn.Commit();
cmd.CommandText = "select result from TBExam where id='001'";
reader = cmd.ExecuteReader();
reader.Read();
blob = reader.GetOracleBlob(0);
byte[] bout = new byte[blob.Length];
blob.Read(bout, 0, bout.Length);
Console.WriteLine("blob length = " + blob.Length);
Console.WriteLine("result = " + new string(System.Text.Encoding.Unicode.GetChars(bout)) );
}
catch (Exception e)
{
Console.WriteLine("Error: {0}", e.Message);
}
finally
{
cmd.Dispose();
_conn.Close();
_conn.Dispose();
} } static void Main(string[] args)
{
new TestOracle().test();
}
}
}
输出结果:
blob length = 14
result = 终于,写进来了