Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 动态存储过程不在webservice中工作_C#_Asp.net_Sql Server_Web Services_Stored Procedures - Fatal编程技术网

C# 动态存储过程不在webservice中工作

C# 动态存储过程不在webservice中工作,c#,asp.net,sql-server,web-services,stored-procedures,C#,Asp.net,Sql Server,Web Services,Stored Procedures,我有一个动态选择存储过程。我在我的web应用程序中完美地使用了它。 但我需要一个web服务,当我编写和调试它时,它会给我一个错误 我正在发送完全相同的参数,但是当web应用程序工作正常时,web服务会给出一个语法错误,例如不正确的语法near和 为什么会这样 try { SqlParameter[] sp = new SqlParameter[8]; sp[0] = new SqlParameter("@tarih", DateTime.Now); sp[1] = new

我有一个动态选择存储过程。我在我的web应用程序中完美地使用了它。 但我需要一个web服务,当我编写和调试它时,它会给我一个错误

我正在发送完全相同的参数,但是当web应用程序工作正常时,web服务会给出一个语法错误,例如不正确的语法near和

为什么会这样

try
{
    SqlParameter[] sp = new SqlParameter[8];
    sp[0] = new SqlParameter("@tarih", DateTime.Now);
    sp[1] = new SqlParameter("@aractipkamyon", true);
    sp[2] = new SqlParameter("@aractipkamyonet", true);
    sp[3] = new SqlParameter("@aractiptir", true);
    sp[4] = new SqlParameter("@nereden", 0);
    sp[5] = new SqlParameter("@nereye", 0);
    sp[6] = new SqlParameter("@yuktipadi", null);
    sp[7] = new SqlParameter("@odemetipadi", "Pesin-Teslimde");
    DataTable dtProc = dbHelper.runQueryWithParams("prIlanHizliArama2", sp);
    if (dtProc.Rows.Count > 0)
    { }
}
catch (Exception)
{
    throw;
}
这是我的db课程

public static DataTable runQueryWithParams(string storedProcedureName, params SqlParameter[] arrParam)
{
    DataTable dt = new DataTable();
    //SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["localhost"].ConnectionString);
    SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ApplicationServices"].ConnectionString);
    SqlCommand cmd = new SqlCommand(storedProcedureName, conn);
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.Parameters.Clear();
    if (conn.State == ConnectionState.Closed || conn.State == ConnectionState.Broken)
        conn.Open();

    try
    {
        if (arrParam != null)
        {
            foreach (SqlParameter param in arrParam)
                cmd.Parameters.Add(param);
        }

        SqlDataAdapter da = new SqlDataAdapter(cmd);
        SqlDataReader dr = cmd.ExecuteReader();
        dt.Load(dr);
        return dt;
    }
    catch (Exception ex)
    {
        throw new Exception("Error: " + ex.Message);
    }
    finally
    {
        cmd.Dispose();
        conn.Close();
    }
}
SQL:


找到了。如果我发送了空字符串,则会由于以下行而导致错误:

我这样替换它:

if (@yuktipadi is not null)
    select @sqlQuery = @sqlQuery + ' and (tbYuktipi.tipadi = ''' + convert(nvarchar(500), @yuktipadi)+ ''') ';

你能发一些代码吗?或者至少是完全的异常。@kad1r问题在于prIlanHizliArama2中的SQL-你能发布这个吗?你也能发布异常吗。感谢您发布完整的错误消息。不知道这是否与您的错误有关,但如果您想将null作为参数值传递,则应使用DBNull.value,而不是sp[6]=newSqlParameter@yuktipadi无效的
if (@yuktipadi is not null)
select @sqlQuery = @sqlQuery + ' and (tbYuktipi.tipadi = ' + convert(nvarchar(500), @yuktipadi)+ ') ';
if (@yuktipadi is not null)
    select @sqlQuery = @sqlQuery + ' and (tbYuktipi.tipadi = ''' + convert(nvarchar(500), @yuktipadi)+ ''') ';