我想使用rails活动记录执行原始SQL查询,但是我的查询使用了一个参数,但是我找不到合适的方法来将该参数安全地传递到查询字符串中。查询如下
def self.get_branches_by_workspace_name(workspace_name)
branches = ActiveRecord::Base.connection.execute("
select
address,
phone,
email,
services
from branches as b, workspaces as w
where b.workspace_id = w.id and w.name= :workspace_name", workspace_name).to_a
return branches
end
Run Code Online (Sandbox Code Playgroud)
我想传递一个名为“ workspace_name”的参数。有什么帮助吗?
网站可以将 csrf_token 显示为 URL 参数吗?我有一种感觉,我应该看不到它,但我不太确定。如果有人能澄清这一点,我将不胜感激!
我有一个名为"InsertEmpolyee"的函数,它接收填充查询字符串的参数.问题是,我想让这些变量中的一些变成可选的,换句话说,我希望能够在不将值传递给这些参数的情况下调用函数,并且仍然通过将NULL插入数据库来生成正确的查询字符串.
这是InsertEmployee函数
public int InsertEmployee(string FirstName, char Minit, string LastName, int SSN
, int? Salary)
{
string query = "INSERT INTO Employee (Fname, Minit, Lname, SSN, Salary) " + "Values ('" + FirstName + "','" + Minit + "','" + LastName + "'," + Salary + ");";
return model.ExecuteNonQuery(query);
}
Run Code Online (Sandbox Code Playgroud)
这就是我如何称呼它.
int res = Controlobj.InsertEmployee(txtbox_FirstName.Text, txtbox_Minit.Text[0],
txtbox_LastName.Text, Int32.Parse(txtbox_SSN.Text), null);
Run Code Online (Sandbox Code Playgroud)
我试图做以下事情
if (!Salary.HasValue)
Salary = DBNull.Value;
Run Code Online (Sandbox Code Playgroud)
但它给我以下错误"不能隐式地将system.DBNull转换为int?"
我怎样才能解决这个问题?还有更好的方法吗?