在查询中使用变量

时间:2009-01-15 08:15:37

标签: c# database

我正在尝试使用过滤器的变量为C#中的数据集设置查询。例如,我试图只显示一个特定的帐号和他的余额,一个局部变量是用作该过滤器的帐号。我是以错误的方式解决这个问题吗?

我无法想象一个真正的程序员,我陷入困境并且使用C#编程指南以及我拥有的有限脑力(现在是空的)运行:)

我还想使用带有eventhandler的按钮来更改数据库信息,以便为查询的单元格添加特定数量。我是因为我对硬编码缺乏了解而注定的,还是我真的可以解决这个问题?

此致 noobish工程师试图编程......或者Jev

4 个答案:

答案 0 :(得分:3)

设置数据集查询时,您可以执行以下操作;

SELECT Name FROM TableNames WHERE Name = @Variable

查看this link for more info

也可能值得研究一下SQL注入攻击,click here

答案 1 :(得分:2)

SqlCommand cmd = new sqlCommand("select * from table1 where column1 = @value", connection);
cmd.parameters.add(new SqlParameters("@value", "yourvalue"));
SqlDataReader dr = cmd.ExecuteReader();
while (dr.read())
{

   //code here!

}

我希望这会有用!

答案 2 :(得分:0)

曾几何时,我写了一篇关于你为什么要在SQL语句中使用参数的文章。 (我写这篇文章是为了回应我看到很多人使用字符串连接编写查询的事实。)

你可以在这里找到它: http://fgheysels.blogspot.com/2005/12/avoiding-sql-injection-and-date.html

答案 3 :(得分:-3)

您可以使用该变量动态生成SQL-Query,但要注意SQL注入 - 请确保您的变量可能不包含SQL语句。

你可以使用一个函数来构建并返回你的SQL-Query,并将filter的变量作为参数:

internal string BuildSQLQueryForAccount(int account)
{
    StringBuilder sb = new StringBuilder();
    sb.Append("SELECT * ");
    sb.Append("FROM Accounts ");
    sb.AppendFormat("WHERE AccountNumber = {0}", account);
    return sb.ToString();
}