У меня есть эта функция для выполнения параметризованных выберите запрос:выражение не-логического типа, указанного в контексте, где ожидается условие, paramerization использованием DbCommand в C#
public string LookUp(string sColuna, string sTabela, string sWhere)
{
string[] Parameters = { "@column", "@table", "@where" };
var comando = @"SELECT @column FROM @table WHERE @where";
var cmd = this.OraConnection.CreateCommand();
cmd.CommandText = comando;
cmd.Parameters.AddRange(Parameters.Select(item => { var param = cmd.CreateParameter(); param.ParameterName = item; param.Value = 1; return para; }).ToArray());
cmd.Parameters[0].Value = sColuna;
cmd.Parameters[1].Value = sTabela;
cmd.Parameters[2].Value = sWhere;
DbDataReader Reader = cmd.ExecuteReader();
return Reader.GetString(0);
}
, когда он достигает DbDataReader Reader = cmd.ExecuteReader();
он бросает me исключение: Дополнительная информация: выражение небулевого типа, указанное в контексте, где ожидается условие, рядом с «@where». Нельзя ли иметь параметр в предложении where?
Теперь я изменил его:
var cmd = this.OraConnection.CreateCommand();
cmd.CommandText = string.Format("SELECT {} FROM {} WHERE", sColuna, sTabela, sWhere);
DbDataReader Reader = cmd.ExecuteReader();
return Reader.GetString(0);
где положение должно определять логическое выражение ... например Где xyz = @where – Kevin
Могу ли я иметь что-то вроде WHERE @something = @something? Я передаю это sWhere var: UserName = 'Joao' – LikeIfYouCaredAboutMyName
is '@ where' содержит строку типа' WHERE val = val' ?? –