我想弄清楚如何在ASP.NET C#中使用MySql。這裏是我的代碼你如何使用MySql IN子句
var WebSites = string.Join(",", wsl.Select(x => "'" + x.DomainUrl + "'").ToArray());
string q = "select Id, Url, Title, Date, ImageUrl from post where WebSiteUrl IN (@Url)";
當我不使用參數此代碼工作。當我包含參數時,我從查詢中得不到任何結果。
這裏是我的參數代碼
cmd.Parameters.Add("@Urls", MySqlDbType.Text).Value = WebSites;
這裏是整個代碼
public static IList<Post> FindPostsByWebSiteList(IEnumerable<WebSite> wsl)
{
var pl = new List<Post>();
var WebSites = string.Join(",", wsl.Select(x => "'" + x.DomainUrl + "'").ToArray());
string q = "select Id, Url, Title, Date, ImageUrl from post where WebSiteUrl IN (@Urls)";
using (MySqlConnection con = new MySqlConnection(WebConfigurationManager.ConnectionStrings["MySqlConnectionString"].ToString()))
{
using (MySqlCommand cmd = new MySqlCommand(q, con))
{
cmd.Parameters.Add("@Urls", MySqlDbType.Text).Value = WebSites;
con.Open();
var reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
while (reader.Read())
{
var p = new Post();
p.Id = reader.GetInt32("Id");
p.Url = reader.GetString("Url");
p.Title = reader.GetString("Title");
p.Date = reader.GetDateTime("Date");
p.ImageUrl = reader.GetString("ImageUrl");
pl.Add(p);
}
return pl;
}
}
}
發生這種情況是因爲您綁定了單個字符串中的所有url。 – zerkms
我不熟悉C#中的綁定參數,但是您確定可以以這種方式綁定嗎?通常你會綁定查詢的實際參數。你正在做的是綁定查詢的一部分。 IN子句期望逗號分隔列表。您正在給它一個單一的變量,其值包含逗號分隔列表的文本。我想這會造成問題。 – Brad