gpt4 book ai didi

c# - 使用 StringBuilder 编写语句的更简单方法

转载 作者:太空宇宙 更新时间:2023-11-03 10:21:44 24 4
gpt4 key购买 nike

我正在尝试转换下面的查询,该查询根据 bool 值执行更新语句。我正在基于 if 语句添加仓库,但我不确定如何使用 StringBuilder 编写它。我是 C# 的新手。

string query = value ? "UPDATE  Warehouse SET usen = 'T' WHERE warehouse='01'" : "UPDATE  Warehouse SET use = 'F' WHERE warehouse='01'";

我尝试了以下操作:

StringBuilder query = new StringBuilder();    
query.Append(value ? "UPDATE Warehouse SET usen = 'T' WHERE warehouse='");
if (warehouse.Equals("T"))
query.Append(TWarehouse + "'");
else if (warehouse.Equals("V"))
query.Append(VWarehouse + "'");
query.Append(: "UPDATE Warehouse SET usen = 'F' WHERE warehouse);

这没有用。显然我做错了什么。谁能帮我解决这个问题。

最佳答案

有比在字符串中构造查询并针对数据库执行查询更好的方法。

正如@AlexeiLevenkov 所建议的,您应该使用参数化查询。参见 How to Execute a Parameterized Query .

此外,StringBuilder 推荐用于长字符串和更复杂的情况。

来自 StringBuilder documentation :

"Although the StringBuilder class generally offers better performance than the String class, you should not automatically replace String with StringBuilder whenever you want to manipulate strings. Performance depends on the size of the string, the amount of memory to be allocated for the new string, the system on which your app is executing, and the type of operation. You should be prepared to test your app to determine whether StringBuilder actually offers a significant performance improvement. "

在您的情况下,您可以使用 string.Format 并获得更具可读性的代码,例如:

string format = "UPDATE Warehouse SET use = '{0}' WHERE warehouse='01'";
string query = string.Format(format, value ? "T" : "F");

关于c# - 使用 StringBuilder 编写语句的更简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33249755/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com