读取blob字段总是报错“数据类型不被支持”

dangdang2471 2009-04-14 05:40:19
编程语言是C#
数据库是ORACLE 8.1.6

现在的问题是,BLOB字段可以正常写入数据,但是读数据的时候报错“发生了一个 Oracle 错误,但无法从 Oracle 中检索错误信息。数据类型不被支持。”

    public static void Main(string[] sParameter)
{
string sConnectionString = "Provider=MSDAORA;User ID=test;Data Source=handing;Password=test;server=192.168.0.5;";
OleDbConnection con = new OleDbConnection(sConnectionString);
con.Open();

OleDbCommand cmd = con.CreateCommand();
OleDbTransaction transaction = con.BeginTransaction();
cmd.Transaction = transaction;

try
{
string SQL = "SELECT * from clob_test2";
cmd.CommandText = SQL;
cmd.Prepare(); //在这里出错
OleDbDataReader dreader = cmd.ExecuteReader();

transaction.Commit();
Console.WriteLine("成功!");
}
catch (Exception ex)
{
transaction.Rollback();
Console.WriteLine("失败!" + ex.Message);
}

Console.Read();
}
...全文
601 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
dangdang2471 2009-04-14
  • 打赏
  • 举报
回复
连接字符串里面的
Provider=MSDAORA
provider=OraOLEDB.Oracle
代表什么?有什么意义?是指的使用什么驱动吗?这个是ODBC的驱动还是OLEDB的驱动?
vrhero 2009-04-14
  • 打赏
  • 举报
回复
不建议用OleDb...应该用System.Data.OracleClient或ODP.NET...
wuyq11 2009-04-14
  • 打赏
  • 举报
回复
string conn_str = "";
OleDbDataAdapter da = new OleDbDataAdapter();
DataSet ds = new DataSet();
OleDbConnection conn = new OleDbConnection(conn_str);
OleDbCommand cmd = new OleDbCommand("SELECT PHOTO FROM USER WHERE USER_ID = 1", conn);
da.SelectCommand = cmd;
cmd.Connection.Open();
da.Fill(ds);

byte[] img = new byte[0];
DataRow dr;
dr = ds.Tables[0].Rows[0];

if (!ds.Tables[0].Rows[0]["PHOTO"].ToString().Equals(""))
{
img = (byte[])dr["PHOTO"];
}

Response.ContentType= "image/*";
Response.BinaryWrite (img);

conn.Close();
a27621165 2009-04-14
  • 打赏
  • 举报
回复

try
{
string SQL = "SELECT * from clob_test2";
cmd.CommandText = SQL;
cmd.Prepare(); //在这里出错


OleDbDataReader dreader = cmd.ExecuteReader();
if(dreader.reader())
{
string Read1= read["字段"].tostring()
}
transaction.Commit();
Console.WriteLine("成功!");
}
catch (Exception ex)
{
transaction.Rollback();
Console.WriteLine("失败!" + ex.Message);
}

Console.Read();

if(dreader.reader())
{
string Read1= read["字段"].tostring()
}


这样可以不??
是否是你需要的效果??
另外只看到con.open();
没看到con.close();
dangdang2471 2009-04-14
  • 打赏
  • 举报
回复
怎么看我现在用的是OLEDB驱动还是ODBC驱动?从连接字符串可以看出来吗?
网上说ODBC不支持BLOB类型

在网上找到一个例程。这是他的连接字符串。
string cnnstr = "provider=OraOLEDB.Oracle;data source=zlkj_kk;User Id=kk;Password=kk;";

provider=OraOLEDB.Oracle。他装的是什么?

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧