WCF 服务类

L_Y_H_1_2_3_4 L_Y_H_1_2_3_4 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

//服务名称:ServiceReference1
//服务端:Service1.svc里面的代码如下
string connectionString = "Data Source=WIN-80OAKU6S6L2;Initial Catalog=lyhjxc;User ID=sa;PassWord=123456;";


/// <summary>
/// 执行SQL语句,返回影响的记录数
/// </summary>
/// <param name="SQLString">SQL语句</param>
/// <param name="cmdParms">参数</param>
/// <returns>影响的记录数</returns>
public int ExecuteSql1(string SQLString, params SqlParameter[] cmdParms)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
using (SqlCommand cmd = new SqlCommand())
{
try
{
PrepareCommand(cmd, connection, null, SQLString, cmdParms);
cmd.Parameters.AddRange(cmdParms);
int rows = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
return rows;
}
catch (System.Data.SqlClient.SqlException e)
{
connection.Close();
throw e;
}
}
}
}

/// <summary>
///
/// </summary>
/// <param name="cmd"></param>
/// <param name="conn">SQL连接</param>
/// <param name="trans">事物</param>
/// <param name="cmdText">SQL语句</param>
/// <param name="cmdParms">参数</param>
private void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, string cmdText, SqlParameter[] cmdParms)
{
try
{
if (conn.State != ConnectionState.Open)
conn.Open();
cmd.Connection = conn;
cmd.CommandText = cmdText;
if (trans != null)
cmd.Transaction = trans;
cmd.CommandType = CommandType.Text;//cmdType;
if (cmdParms != null)
{
foreach (SqlParameter parameter in cmdParms)
{
if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) &&
(parameter.Value == null))
{
parameter.Value = DBNull.Value;
}
cmd.Parameters.Add(parameter);
}
}
Hashtable SQLStringList = new Hashtable();
}
catch (System.Data.SqlClient.SqlException ex)
{
throw ex;
}
}


//IService1.cs

[OperationContract]
int ExecuteSql1(string SQLString, params SqlParameter[] cmdParms);


//客户端调用ExecuteSql1方法:
ServiceReference1.Service1Client FF= new ServiceReference1.Service1Client();

FF.ExecuteSql1(“select * from user where ID=@ID”,cmdParms)

执行后报如下错误:

尝试对参数 http://tempuri.org/ 进行序列化时出错: cmdParms。InnerException 消息是“不应为数据协定名称为“string:http://www.w3.org/2001/XMLSchema”的类型“System.Data.SqlTypes.SqlString”。请考虑使用 DataContractResolver,或将任何未知类型以静态方式添加到已知类型的列表。例如,可以使用 KnownTypeAttribute 特性,或者将未知类型添加到传递给 DataContractSerializer 的已知类型列表。”。有关详细信息,请参见 InnerException。


这个问题要怎么处理??
...全文
评论 4
收藏 已收藏
分享
返回顶部
L_Y_H_1_2_3_4
C# 111,128 成员 642,536 内容