小编Say*_*awy的帖子

将参数传递给Rails内部的原始SQL查询

我想使用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”的参数。有什么帮助吗?

ruby sql postgresql activerecord ruby-on-rails

4
推荐指数
3
解决办法
5237
查看次数

csrf_token 显示为 URL 参数

网站可以将 csrf_token 显示为 URL 参数吗?我有一种感觉,我应该看不到它,但我不太确定。如果有人能澄清这一点,我将不胜感激!

security http-token-authentication

3
推荐指数
1
解决办法
2706
查看次数

在查询字符串中传递NULL值

我有一个名为"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?"

我怎样才能解决这个问题?还有更好的方法吗?

c# sql database dbnull

0
推荐指数
1
解决办法
1235
查看次数