我在项目中使用实体框架6。
我使用Database类的SqlQuery方法从表中获取一些字符串值。
以下是代码:
string name = "Dana";
context.Database.SqlQuery<string>("SELECT DisplayName FROM Users WHERE Username = name ", name).ToList();
但似乎我在SqlQuery
方法中使用 name 变量是错误的。
知道我应该在SqlQuery
方法字符串中修复哪些内容才能正常查询?
答案 0 :(得分:1)
您忘了指定@
是参数。在它之前添加context.Database.SqlQuery<string>("SELECT DisplayName FROM Users WHERE Username = @p0", name).ToList();
:
SqlParameter
如果要命名参数,请使用context.Database.SqlQuery<string>(
"SELECT DisplayName FROM Users WHERE Username = @name",
new SqlParameter("@name", name)
).ToList();
class:
function hex2float(num) {
var sign = (num & 0x80000000) ? -1 : 1;
var exponent = ((num >> 23) & 0xff) - 127;
var mantissa = 1 + ((num & 0x7fffff) / 0x7fffff);
return sign * mantissa * Math.pow(2, exponent);
}
答案 1 :(得分:1)
答案 2 :(得分:1)
context.Database.SqlQuery<string>("SELECT DisplayName FROM Users WHERE Username = @name ",
new SqlParameter("@name", name)).ToList();
答案 3 :(得分:1)
您忘记将@
放在名字参数之前。你也不应该只是将一个字符串传递给方法。如果你使用SqlParameter
来阻止任何Sql注入
string name = "Dana";
SqlParameter paramName = new SqlParameter("name", name );
context.Database.SqlQuery<string>("SELECT DisplayName FROM Users WHERE Username = @name ", paramName ).ToList();
答案 4 :(得分:1)
我认为你应该像这样使用它:
context.Database.SqlQuery<string>(
"SELECT DisplayName FROM Users WHERE Username = @name",
new SqlParameter("name", name)
).ToList();