如何在VB中传一个图像类型的值给一个存贮过程,如ADODB.Command对象执行SP。

解决方案 »

  1.   

    直接将image字段当作参数传递从sql的语法上来说是好像是不可能的!但如果你的字段大小是8000字节以下,可以考虑使用binary或varbinary!
      

  2.   

    你还可以考虑用TEXTPTR(参照SQL Server7.0下的books)
      

  3.   

    存储过程为
    Create Proc P_InsImg
    (@iInt int,
     @MyByte Image(16)
    )
    as
     insert into MyImageTable Values(@iInt,@MyByte)如下方式调用:
      1.获得二进制值
                Dim FileLen As Long
                Dim MyString As String = ""
                Dim MyStream As System.IO.Stream
                FileLen = myfile.ContentLength
                Dim tmp(FileLen) As Byte
                MyStream = myfile.InputStream
                Dim ii As Long
                For ii = 0 To FileLen - 1
                    tmp(ii) = MyStream.ReadByte()
                Next
      2、调用存储过程
                    Dim cmdSql As New SqlCommand()
                    Dim ParamUser As New SqlParameter()
                    Dim ParamBarCode As New SqlParameter()
                    cmdSql.CommandText = "P_GetUserBarRight"             '取出该用户该的存储过程
                    cmdSql.CommandType = CommandType.StoredProcedure
                    cmdSql.Connection = SqlConn.appConn
                    ParamUser = cmdSql.Parameters.Add("@iInt", SqlDbType.Int)
                    ParamUser.Direction = ParameterDirection.Input
                    ParamUser.Value = 1                      '输入参数一
                    ParamBarCode = cmdSql.Parameters.Add("@MyByte ", SqlDbType.Binary,FileLen)
                    ParamBarCode.Direction = ParameterDirection.Input
                    ParamBarCode.Value =tmp(ii)
                                      '输入参数二
                    cmdSql.ExecuteNonQuery() '执行