C# 动态存储过程不在webservice中工作
我有一个动态选择存储过程。我在我的web应用程序中完美地使用了它。 但我需要一个web服务,当我编写和调试它时,它会给我一个错误 我正在发送完全相同的参数,但是当web应用程序工作正常时,web服务会给出一个语法错误,例如不正确的语法near和 为什么会这样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
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)+ ''') ';