Dim conn As New OracleConnection("server=Oracle;Uid=uid;pwd=pwd")
        Dim filePath As String
        Dim bigData As Byte()
        Dim t As Date        t = Now        filePath = "C:\mytest.bmp" 'Add the path to the file you want to insert
        If Not File.Exists(filePath) Then
            ' handle error
        End If
        Dim fs As Stream = _
                    File.OpenRead(filePath)
        Dim tempBuff(fs.Length) As Byte        fs.Read(tempBuff, 0, fs.Length)
        fs.Close()
        conn.Open()        Dim tx As OracleTransaction
        tx = conn.BeginTransaction()        Dim cmd As New OracleCommand()
        cmd = conn.CreateCommand()        cmd.Transaction = tx        cmd.CommandText = "declare xx blob; begin dbms_lob.createtemporary(xx, false, 0); :tempblob := xx; end;"
        cmd.Parameters.Add(New OracleParameter("tempblob", OracleType.Blob)).Direction = ParameterDirection.Output
        cmd.ExecuteNonQuery()        Dim tempLob As OracleLob
        tempLob = cmd.Parameters(0).Value
        tempLob.BeginBatch(OracleLobOpenMode.ReadWrite)
        tempLob.Write(tempBuff, 0, tempBuff.Length)
        tempLob.EndBatch()        cmd.Parameters.Clear()
        cmd.CommandText = "InsertBlob.TestBlobInsert"
        cmd.CommandType = CommandType.StoredProcedure
        cmd.Parameters.Add(New OracleParameter("BlobParam", OracleType.Blob)).Value = tempLob
        Try
            cmd.ExecuteNonQuery()
        Catch myex As Exception
            MsgBox(myex.Message)
        End Try
        tx.Commit()

解决方案 »

  1.   

    楼上的大侠,我看不懂下面的代码,请详细解释以下,多谢!
    cmd.CommandText = "declare xx blob; begin dbms_lob.createtemporary(xx, false, 0); :tempblob := xx; end;"
      

  2.   

    这是一个来自MS的标准Sample,不是实际的实现代码。你可参照这个写出各种实际的代码
    (T-SQL语句、StoredProcedure)
      

  3.   

    qimini(循序渐进) 大哥,我只把我认为相关的代码贴出来, //定义变量并初始化
    string sSystype = edtSysType.KeyValue; //制度类型
    string sTitle = txtTitle.Text; //标题
    string sAuthor = txtAuthor.Text; //作者
    string sSummary = txtSummary.Text; //主题词
    string sPubDate = edtPubDate.Value; //颁布时间 //得到提交的文件
    Stream fileDataStream = browse.PostedFile.InputStream;//得到文件大小
    int fileLength = browse.PostedFile.ContentLength;//创建数组
    byte[] fileData = new byte[fileLength];//把文件流填充到数组
    fileDataStream.Read(fileData,0,fileLength);
    string InsertStr = "Insert into T_TrainSafeSystem(SYSTEMTYPE,SYSTEMTITLE,AUTHOR,THEMATICWORD,PRINTSMANTIME," + 
    "SYSTEMCONTENT,OPERATION_DATE,OPERATOR_ID)" +
    " values(?,?,?,?,?,?,sysdate,'XYM')" ;string ConnStr = ConfigurationSettings.AppSettings[0];
    OleDbConnection objConn = new OleDbConnection(ConnStr);
    OleDbCommand InsertCmd = new OleDbCommand(InsertStr,objConn);
    InsertCmd.Parameters.Add(new OleDbParameter("@systype",OleDbType.VarChar,30,"SYSTEMTYPE"));
    //制度类型
    InsertCmd.Parameters["@systype"].Value = sSystype;
    InsertCmd.Parameters.Add(new OleDbParameter("@title",OleDbType.VarChar,100,"SYSTEMTITLE")); //标题
    InsertCmd.Parameters["@title"].Value = sTitle;
    InsertCmd.Parameters.Add(new OleDbParameter("@author",OleDbType.VarChar,30,"AUTHOR")); //作者
    InsertCmd.Parameters["@author"].Value = sAuthor;
    InsertCmd.Parameters.Add(new OleDbParameter("@summary",OleDbType.VarChar,255,"THEMATICWORD"));
    //主题
    InsertCmd.Parameters["@summary"].Value = sSummary;
    InsertCmd.Parameters.Add(new OleDbParameter("@pubdate",OleDbType.Date));
    //颁布时间
    InsertCmd.Parameters["@pubdate"].Value = DateTime.Parse(sPubDate);
    InsertCmd.Parameters.Add(new OleDbParameter("@bytefile",OleDbType.VarBinary,fileLength,"SYSTEMCONTENT"));
    //选择文件
    InsertCmd.Parameters["@bytefile"].Value = fileData; objConn.Open();
    InsertCmd.ExecuteNonQuery();编译时系统提示 语句 InsertCmd.ExecuteNonQuery(); 有错误:
    ORA-03113: 通信通道的文件结束 大侠,到底错在哪里啊??
      

  4.   

    昏,Oracle参数是&符号+ParameterName不是?也不是@符号+ParameterNameSample:SELECT CategoryID, CategoryName, Description 
    FROM Categories 
    WHERE CategoryID = &categoryid;