首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将SqlParameter发送到SQLParameter包含Bytes[]的WCF?

如何将SqlParameter发送到SQLParameter包含Bytes[]的WCF?
EN

Stack Overflow用户
提问于 2014-02-05 10:34:47
回答 2查看 1K关注 0票数 1

我正在尝试将SqlPrameter发送到wcf服务。我试图发送的SqlParameter参数包括字符串、整数和字节(我将文件存储在数据库中的var二进制文件中)。这个

下面是我在应用程序中使用的C#代码:

代码语言:javascript
复制
Public Function InsertadanceClaimAttachMents(ByVal params As SqlParameter()) As Integer Implements IService.InsertadanceClaimAttachMents
       Dim i As Int16
       Try
           sql = ""
           sql = "Proc_InsertAdvanceClamAtt"

           i = Db.ExecProcedure(Declarations.ConnectionString, sql, params)
           Return i
       Catch ex As Exception
           Db.WriteErrorLog(ex, "Wcf_DBAccess.vb", "InsertadanceClaimAttachMents")
           Return 0
       End Try
   End Function

下面是我在WCF服务中使用的VB函数

代码语言:javascript
复制
  public bool insertAdvanceAttachments(Byte[] bytes, string filename, string ClaimNo, string mkrid)
       {
           Int32 I;
           SqlConnection con = new SqlConnection(conn);
           SqlCommand cmd = new SqlCommand();
           SqlDataAdapter da = new SqlDataAdapter();
           cmd.Connection = con;
           cmd.CommandType = CommandType.StoredProcedure;
           cmd.CommandText = "Proc_InsertAdvanceClamAtt";


           cmd.Parameters.AddWithValue("@img", bytes);
           cmd.Parameters.AddWithValue("@imgname", filename);
           cmd.Parameters.AddWithValue("@ClaimNo", ClaimNo);
           cmd.Parameters.AddWithValue("@mkrid", mkrid);

           try
           {
               con.Open();
               cmd.ExecuteNonQuery();
               return true;
           }
           catch
           {
               return false;
           }
           //finally { con.Close(); }


           //try
           //{
           //    // string param, paramval;
           //    //param = "@img|@imgname|@ClaimNo|@mkrid";
           //    //paramval = ASCIIEncoding.ASCII.GetString(bytes).ToString() + "|" + filename + "|" + ClaimNo + "|" + mkrid;


           //    //SqlParameter[] param = { new SqlParameter("@img", bytes ), new SqlParameter("@imgname", filename), new SqlParameter("@ClaimNo", ClaimNo), new SqlParameter("@mkrid", mkrid) };


           //    SqlParameter[] param = { new SqlParameter("@img", SqlDbType.VarBinary, bytes.Length, ParameterDirection.Input, false, 0, 0, "Data", DataRowVersion.Current, (SqlBinary)bytes), new SqlParameter("@imgname", filename), new SqlParameter("@ClaimNo", ClaimNo), new SqlParameter("@mkrid", mkrid) };

           //    I = baz_obj.InsertadanceClaimAttachMents(param);
           //    return true;
           //}
           //catch (Exception ex)
           //{
           //    return false;
           //}
           return true;
       }

问题是,我甚至无法访问WCF服务get以下错误:

试图序列化参数时出错。 http://tempuri.org/:params。 InnerException消息是“Type‘System.Data.SqlTypes.SqlBinary”,它的数据契约名为“base64Binary:http://www.w3.org/2001/XMLSchema”。考虑使用DataContractResolver或将任何类型静态地添加到已知类型列表中,例如,使用KnownTypeAttribute属性或将它们添加到传递给DataContractSerializer的已知类型列表中。请参阅InnerException获得更多详细信息

更新

代码语言:javascript
复制
SqlParameter[] param = { new SqlParameter("@img", SqlDbType.VarBinary), new SqlParameter("@imgname", SqlDbType.VarChar), new SqlParameter("@ClaimNo", SqlDbType.VarChar), new SqlParameter("@mkrid", SqlDbType.VarChar) };
           param[0].Value = bytes;
           param[1].Value = filename;
           param[2].Value = ClaimNo;
           param[3].Value = mkrid;
EN

回答 2

Stack Overflow用户

发布于 2014-02-05 10:44:46

代码语言:javascript
复制
Dim data As byte()
Dim parameter As New SqlParameter("@Param1", SqlDbType.VarBinary);
parameter.Value = data

您可以使用SqlDbType.Image而不是SqlDbType.VarBinary

看看这个问题也不是同样的问题,但你可以从这里得到你的答案。

票数 1
EN

Stack Overflow用户

发布于 2014-02-05 10:39:14

将参数类型设置为VarBinary

代码语言:javascript
复制
SQLParameter param1=new SqlParameter("@img",SqlDbType.VarBinary);
param1.Value=bytes
param.Add(param1);
param.AddRange(etc);

检查数据类型映射

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21574771

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档