使用oledbParameter来实现。
类似于sqlparameter,但只能用占位符?来代替参数名,参考相关的reference

解决方案 »

  1.   

    strcmd = "insert into Image(field) values (@intStatus)";
    objcmd1.Parameter.Add(new SqlParameter("@intStatus",SqlDbType.Image));
    objcmd1.Parameter["@intStatus"] = intStatus;objcmd1.ExecuteNonQuery();
      

  2.   

    to: xrascal(横刀夺爱)
    使用
    objcmd1.Parameter.Add(new SqlParameter("@intStatus",SqlDbType.Image));
    objcmd1.Parameter["@intStatus"] = intStatus;
    是不是sql里面还需要加入相应的存储过程?能不能不使用存储过程实现
      

  3.   

    建立Image字段,
    Public Sub AddFileToField(ByRef RsField As ADODB.Field, ByVal sFName As String)
            If Not File.Exists(sFName) Then
                Exit Sub
            End If
            Dim lngOffSet As Long, lngLogoSize As Long
            Dim varData() As Byte
            Dim iFileNum As Long
            iFileNum = FreeFile()
            Const CONCHUNKSIZE As Long = 16384
            Dim iChunks As Long
            Dim iFragmentSize As Long
            Dim iFieldSize As Long
            Dim fp As New FileIOPermission(FileIOPermissionAccess.Write, sFName)
            fp.AddPathList(FileIOPermissionAccess.Write Or FileIOPermissionAccess.Append, sFName)
            fp.Demand()
            fp.Assert()
            On Error GoTo Err_Trap
            Dim dstFile As File
            Dim dst As Stream
            dst = dstFile.Open(sFName, FileMode.Open, FileAccess.Read, FileShare.None)
            iFieldSize = dst.Length
            If iFieldSize = 0 Then
                GoTo Err_Trap
            End If
            iChunks = Fix(iFieldSize / CONCHUNKSIZE)
            iFragmentSize = iFieldSize Mod CONCHUNKSIZE
            If iFragmentSize > 0 Then
                ReDim varData(iFragmentSize - 1)
                dst.Read(varData, 0, UBound(varData) + 1)
                RsField.AppendChunk(varData)
            End If
            Dim Cnt As Integer
            For Cnt = 1 To iChunks
                ReDim varData(CONCHUNKSIZE - 1)
                dst.Read(varData, 0, UBound(varData) + 1)
                RsField.AppendChunk(varData)
            Next Cnt
            dst.Close()
            On Error Resume Next
            File.Delete(sFName)        Exit Sub
    Err_Trap:
            On Error Resume Next
            fp.RevertAll()
            fp = Nothing
            dst.Close()
            dst = Nothing
            Err.Raise(33, , "保存文件时出现错误")
        End Sub
    Private Sub SaveManBaseItemHead(ByVal Cnn As ADODB.Connection, ByVal Dict As Scripting.Dictionary)
            Dim Rs As ADODB.Recordset
            Rs = New ADODB.Recordset()
            Rs.CursorType = ADODB.CursorTypeEnum.adOpenKeyset
            Rs.LockType = ADODB.LockTypeEnum.adLockOptimistic
            Rs.Open("ManBaseItemHead", Cnn, , , ADODB.CommandTypeEnum.adCmdTable)
            Rs.AddNew()
            If CNulls(Dict("Photo"), vbNullString) <> vbNullString Then
                AddFileToField(Rs.Fields("Photo"), Dict("Photo"))
            End If
            Dim i As Integer
            For i = 0 To Rs.Fields.Count - 1
                If CNulls(Dict(Rs.Fields(i).Name), vbNullString) <> vbNullString And UCase(Rs.Fields(i).Name) <> UCase("Photo") Then
                    Rs(Rs.Fields(i).Name).Value = Dict(Rs.Fields(i).Name)
                End If
            Next
            Rs.Update()
            Rs.Close() : Rs = Nothing
            SaveManTrans(Cnn, Dict)
        End Sub任何文件都可以存,更不用说图片了
      

  4.   

    问题还是没解决,我不太了解oledbParameter
    请问那位高手能帮忙贴一段关于用oledbParameter往数据库中写图片的代码?
    请帮帮忙
      

  5.   

    我昏了,80%以上看不懂
    我就看明白了用的是access而且用的是ado..
      

  6.   

    SqlCommand 和SqlParameter都是属于system.什么?
    总是报未定义类型?
      

  7.   

    简单说来,要用rs.addnew,rs.update,而二进制文件要用RsField.AppendChunk这个方法放进字段去,使用rs.update来更新这条记录使他进入数据库。
      

  8.   

    adodb好像不太适合于当apsx的数据库,我记得adodb好像是独占的打开数据库的
    在dao中需要用System.Data.SqlClient作为引用的前提
    这个引用是找到了,但是
    Dim myCommand As NewSystem.Data.SqlClient.SqlCommand("sp_person_isp", myConnection)中"sp_person_isp"有错误,我不明白这里应该是什么类型的字段