gpt4 book ai didi

c# - 将 uniqueidentifier 转换为字符串并在Where 子句中使用

转载 作者:行者123 更新时间:2023-11-29 19:29:40 24 4
gpt4 key购买 nike

找出答案并编辑问题,现在可以使用了。

这是我的例子

我的数据库中的 CustomerID 列设置为 uniqueidentifier。

C#

string cid = ( This is a variable; it could be ANY guid the user chooses. )   

查询字符串

                   " SELECT * FROM [db]
WHERE (CAST(CustomerID AS VARCHAR(100)) LIKE '%"+cid+@"%');"

CustomerID 字段不会计算具有相同 cid 的行。因此,使用唯一标识符 (CustomerID) 评估 cid 时遇到问题。

最佳答案

不要通过将用户输入的字符串连接到查询中来构建查询。它可以导致 sql injection这是一个严重问题。

您应该使用 parametrized queries ,您可以在其中以参数的形式将用户输入传递给查询。然后,底层框架/驱动程序/等将确保用户输入的准备方式不会意外地变成 SQL 代码。

类似这样的事情:

Guid cidAsGuid = new Guid(cid);
MySqlCommand command = new MySqlCommand("SELECT * FROM [db] WHERE CustomerId = @customerID");
command.Parameters.AddWithValue("@customerID", cidAsGuid);

然后你可以使用该命令来执行读取器或填充适配器或其他你需要做的事情。

这还有一个额外的好处,即 CustomerId 上的索引列可用于加快查询速度,而如果您通过转换 CustomerId 进行搜索来自Guidstring意味着数据库必须扫描整个表。对于小表,您不会注意到太大的差异,但对于大表,差异将非常显着。

关于c# - 将 uniqueidentifier 转换为字符串并在Where 子句中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41885123/

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