我正在开发一个Windows窗体应用程序。我想通过用户选择更改SQL命令。这是我的代码:
command.CommandText = "SELECT * FROM Product WHERE price = @price";
command.Parameters.AddWithValue("@price", 35);
我也想改变" ="到"> ="或者是其他东西。当我使用参数时,我会收到错误。
command.CommandText = "SELECT * FROM Urun WHERE price @equal @price";
command.Parameters.AddWithValue("@price", 35);
command.Parameters.AddWithValue("@equal", ">=");
我该怎么做?
答案 0 :(得分:6)
是否从位动态构建完整SQL,或者是否有一组预先完成的SQL查询,将取决于您正在尝试做什么。显然你应该仍然使用值的参数。
答案 1 :(得分:3)
我通常使用string.format()
来完成此操作。
例如:
command.CommandText = string.format("SELECT * FROM Product WHERE price {0} @price", ">=");
command.Parameters.AddWithValue("@price", 35);
在实际使用中,您将“> =”替换为包含所需运算符的变量,例如:
string op = ">=";
command.CommandText = string.format("SELECT * FROM Product WHERE price {0} @price", op);
command.Parameters.AddWithValue("@price", 35);
编辑:正如Tim S.在评论中指出的那样,用户输入直接输入这个并不是一个好主意。就个人而言,我会从枚举中执行此操作,并使用用户输入来确定要使用的枚举值。如果您决定使用直接用户输入,请确保擦除输入以避免可能的SQL注入。
答案 2 :(得分:1)
string comparation=">="
command.CommandText =string.Format("SELECT * FROM Urun WHERE price {0} @price",comparation);
command.Parameters.AddWithValue("@price", 35);