用oledb应该是不支持blob,必须用Oracle Provider for .net的OrcaleConnection才可以

解决方案 »

  1.   

    请问 panyee(快乐王子)如果是在ACCESS中要保存图片如何做,我在sql中用image字段,但ACCESS中没有这一类型
      

  2.   

    对于blob字段,一般用datareader 来读,经参考datareader的有关文档
      

  3.   

    hoho,原来是这样。那既然不能用OleDb,SqlConnection也是不能用的,因为我的图片存放在Oracle里,那该用什么呢?
      

  4.   

    MS的例子:
    HOW TO: Read and Write a File to and from a BLOB Column by Using ADO.NET and Visual C++ .NEThttp://support.microsoft.com/default.aspx?scid=kb;EN-US;317017
      

  5.   

    呵呵,zerg909,我也下了一个odbc.net,安装也成功了,也在VS.NET里的“项目”->“添加引用”里选了它,但是在程序里using引用的时候怎么找不到呢?using System.Data.? 没有新的odbc呀?
      

  6.   

    要引用odbc.net, 找一下硬盘文件, 把System.Data.ODBCClient.dll拷到
    C:\WINNT\Microsoft.NET\Framework\v1.0.3705或v1.0.4322里
      

  7.   

    好,我装了一个Oracle Provider for .net组件,用了OracleConnection、OracleDataReader就可以读出来了:)不过,怎样显示呢?
      

  8.   

    而且,我发现装上Oracle Provider for .net以后,Oracle客户端就不能用了:(
    哪位大人有解决办法吗?
      

  9.   

    string SQL = "SELECT FileSize, FileData, ContentType FROM tblFile WHERE FileID = " 
    + FileID.ToString(); OleDbConnection dbConn = new OleDbConnection(GetConnectionString()); OleDbCommand dbComm = new OleDbCommand(SQL, dbConn);
    dbConn.Open();
    OleDbDataReader dbRead = dbComm.ExecuteReader();
    dbRead.Read();
    Response.Clear();
    Response.ContentType = (string)dbRead["ContentType"];
    Response.OutputStream.Write((byte[])dbRead["FileData"], 0, (int)dbRead["FileSize"]);
    dbConn.Close();
    Response.End();
      

  10.   

    http://xml.sz.luohuedu.net/xml/content.asp
      

  11.   

    这个人看看,看行不行!不好意,没有时间解,我得下线了!:)
    <%@ Page Language="vb" %>
    <%@ Import Namespace="System.Data" %>
    <%@ Import Namespace="System.Data.SqlClient" %>
    <html>
    <head>
    <title>用户列表</title>
    <script runat=server>
    Sub Page_Load(sender As Object, e As EventArgs)
      If Not Page.IsPostBack Then
      BindGrid()
      End If
    End SubPrivate Sub BindGrid()
      Dim strCnn As String = "Data Source=.;Initial Catalog=mxh;User Id=sa;Password=;"
      Dim myConnection As SqlConnection = New SqlConnection(strCnn)
      Dim myCommand As SqlCommand = New SqlCommand("SELECT * FROM Person", myConnection)
      myCommand.CommandType = CommandType.Text
      Try
        myConnection.Open()
        DG_Persons.DataSource = myCommand.ExecuteReader(CommandBehavior.CloseConnection)
        DG_Persons.DataBind()
        Catch SQLexc As SqlException
        Response.Write("Error occured while Generating Data. Error is " & SQLexc.ToString())
      End Try
    End SubFunction FormatURL(strArgument) as String
      Return ("ReadImage.aspx?id=" & strArgument)
    End Function
    </script>
    </head>
    <body style="font: 9pt 宋体">
    <h3 align=center>从数据库中取得照片并显示在DataGrid中</h3>
    <form id="Form1" method="post" runat="server">
    <asp:DataGrid ID="DG_Persons" AutoGenerateColumns=False Width="99%"
     HeaderStyle-BackColor="#ff0000" HeaderStyle-Font-Bold="True" HeaderStyle-ForeColor="#ffffff"
     ItemStyle-BackColor=Beige BorderColor="#000000" Runat=server HeaderStyle-HorizontalAlign=Center>
    <Columns>
    <asp:TemplateColumn HeaderText="姓名">
    <ItemTemplate>
    <asp:Label Runat="server"  Text='<%# DataBinder.Eval(Container.DataItem, "PersonName") %>' ID="Label1"/>
    </ItemTemplate>                               
    </asp:TemplateColumn>
    <asp:TemplateColumn HeaderText="电子邮件">
    <ItemTemplate>
    <asp:Label Runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "PersonEmail") %>' ID="Label2"/>
    </ItemTemplate>                               
    </asp:TemplateColumn>
    <asp:TemplateColumn HeaderText="性别">
    <ItemTemplate>
    <asp:Label Runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "PersonSex") %>' ID="Label3"/>
    </ItemTemplate>                               
    </asp:TemplateColumn>
    <asp:TemplateColumn HeaderText="出生日期">
    <ItemTemplate>
    <asp:Label Runat="server" 
      Text='<%# DataBinder.Eval(Container.DataItem, "PersonDOB") %>' ID="Label4"/>
    </ItemTemplate>                               
    </asp:TemplateColumn>
    <asp:TemplateColumn HeaderText="照片">
    <ItemTemplate>
    <asp:Image Runat=server ID="Image1"  Width="150" Height="125"
     ImageUrl='<%# FormatURL(DataBinder.Eval(Container.DataItem, "PersonID")) %>'  />
    </ItemTemplate>                               
    </asp:TemplateColumn>
    </Columns>
    </asp:DataGrid>
    </form>
    </body>
    </html>ReadImage.aspx<%@ Page Language="vb" %>
    <%@ Import Namespace="System.Data" %>
    <%@ Import Namespace="System.Data.SqlClient" %>
    <HTML>
    <HEAD>
    <script runat=server>
    Public Sub Page_Load(sender As Object, e As EventArgs)
      Dim strImageID as String = Request.QueryString("id")
      Dim myConnection As New SqlConnection("Data Source=.;Initial Catalog=mxh;User Id=sa;Password=;")
      Dim myCommand As New SqlCommand("Select PersonImageType, PersonImage from Person Where PersonID=" _
        + strImageID, myConnection)  Try
        myConnection.Open()
        Dim myDataReader as SqlDataReader 
        myDataReader = myCommand.ExecuteReader(CommandBehavior.CloseConnection)
        Do While (myDataReader.Read())
        Response.ContentType = myDataReader.Item("PersonImageType")
        Response.BinaryWrite(myDataReader.Item("PersonImage"))
        Loop
        myConnection.Close()
        Catch SQLexc As SqlException
      End Try
    End Sub    
    </script>
    </HEAD>
    <body>
    <form runat="server" ID="Form1"></form>
    </body>
    </HTML>