gpt4 book ai didi

c# - MySQL查询不返回值,但存在于数据库中

转载 作者:行者123 更新时间:2023-11-29 08:16:35 25 4
gpt4 key购买 nike

我有一个奇怪的问题..我有这个代码:

using (MySqlCommand cmd = new MySqlCommand())
{
cmd.Connection = this.connection;
cmd.CommandText = "SELECT id FROM links WHERE url LIKE '@url'";
cmd.Parameters.AddWithValue("@url", parent_url.Trim());
cmd.Prepare();

using (MySqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
parent_id = reader.GetInt32(0);
}
}
}

我的问题是..有时当数据库中有答案时它不会返回值。这很奇怪。我还注意到数据库中的某些项目后面有一个空格,所以这就是我这样做的原因:

    using (MySqlCommand cmd = new MySqlCommand())
{
cmd.Connection = this.connection;
cmd.CommandText = "SELECT id FROM links WHERE url LIKE '@url'";
cmd.Parameters.AddWithValue("@url", parent_url.Trim());
cmd.Prepare();

using (MySqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
parent_id = reader.GetInt32(0);
}
}
}

if(parent_id == 0)
{
using (MySqlCommand cmd = new MySqlCommand())
{
cmd.Connection = this.connection;
cmd.CommandText = "SELECT id FROM links WHERE url LIKE '@url '";
cmd.Parameters.AddWithValue("@url", parent_url.Trim());
cmd.Prepare();

using (MySqlDataReader reader = cmd.ExecuteReader())
{
while (reader.Read())
{
parent_id = reader.GetInt32(0);
}
}
}
}

但有时它仍然对我没有帮助..即使该项目后面没有空格。所以是的..你们能给我一些建议吗..我应该尝试什么。

最佳答案

"SELECT id FROM links WHERE url LIKE @url";

从参数中删除'',这样只有它才会被视为参数

否则它只是一个等于@url的字符串值

如果您需要在数据库列上搜索给定字符串,请使用 % 如下所示

cmd.Parameters.AddWithValue("@url", "%" + parent_url.Trim()+ "%");

更新:

您可以使用如下修剪功能

"SELECT id FROM links WHERE trim(url) LIKE @url";

关于c# - MySQL查询不返回值,但存在于数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20501770/

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