[求教]C#.net下如何取出Oracle数据库中的Blob字段(50分)

  • 主题发起人 主题发起人 tyy_jasmine
  • 开始时间 开始时间
T

tyy_jasmine

Unregistered / Unconfirmed
GUEST, unregistred user!
我已经用OleDaCommand将文件转为二进制流存入到Oracle数据库的Blob字段中了,
现在想用OleDbDataReader读取出来,在网上看了很多资料,都是VB.Net或Asp.Net中用OleDbDataReader读取,或C#.net中用SqlDbDataReader读取,我没有装ODP.net,
又是用C#开发windows应用程序,所以只能用C#.net的OleDbDataReader来读,
我用了与SQlDbDataReader类似的方法,程序如下:
OleDbConnection myConn =new DbConnection("Provider=MSDAORA.1;Password=xxxx;User ID=aaaaaa;Data Source=bbbbb");
string sql="select * from tableuser";
OleDbCommand myComm = new OleDbCommand(sql , myConn ) ;
myConn.Open ( );
OleDbDataReader yReader=myComm.ExecuteReader(CommandBehavior.SequentialAccess);
却总是在执行最后一句时显示错误:不支持此接口,发生了一个Oracle错误,但无法从Oracle中检索错误信息,数据类型不被支持。
但当Sql语句中的*为非blob字段时运行正常。
急!请高手指点,谢谢!
 
试试
selectblob
 
你用的是.net .1.1吗?如果是用System.Data.OracleClient 命名空间中的类吧
 
没有搜到System.Data.OracleClient,这个好像在2003的版本中才有?
不知道好不好用呀?很奇怪为什么存进去了,却无法取成功呢?
 
是的,只有2003版本中才有.
 
你用过没有,做类似的blob的存取?好用么?
有没有什么其他的办法呢?谢谢!
 
我没有用过,前一段看见有人提问这方面的问题,他用的就是System.Data.OracleClient中的类.
 
微软之所以单独作了一些存取oracle的类,我想应该好用的.oracle的每一个类型都有对应的类,你试试看吧.
 
别用ODBC,用ado试试看,用odbc是要装odbc.net
 
请参考,如下代码我在ACCESS运行成功:
private void ShowTheFile(int FileID)
{
// Define SQL select statement
string SQL = "Select filename,filetype,filesize,filedata From UsrImage where XH = " + FileID.ToString();
// Create Connection object
OleDbConnection dbConn = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("db1.mdb"));
// Create Command Object
OleDbCommand dbComm = new OleDbCommand(SQL, dbConn);
// Open Connection
dbConn.Open();
// Execute command and receive DataReader
OleDbDataReader dbRead = dbComm.ExecuteReader();
// Read row
dbRead.Read();
// Clear Response buffer
Response.Clear();
// Set ContentType to the ContentType of our file
Response.ContentType = (string)dbRead["filetype"];
// Write data out of database into Output Stream
Response.OutputStream.Write((byte[])dbRead["filedata"], 0,(int)dbRead["filesize"]);
// Close database connection
dbConn.Close();
// End the page
Response.End();
}
 
后退
顶部