gpt4 book ai didi

C# 循环、SQL 和检索信息

转载 作者:搜寻专家 更新时间:2023-10-30 20:02:38 25 4
gpt4 key购买 nike

我的数据库中只有第 2 组的 1 个文件,当我尝试检索第 2 组的最后 5 个文件时,我检索了该文件 4 次?

我知道这是我循环中的问题,但我看不出检索 4 次具有相同 ID 的相同文件的问题在哪里。

这是我使用的代码!

                dynamic queryString = ("SELECT Files.Id, Files.Name, Files.Date, Files.Path, Files.[Group] FROM Files,Groups WHERE Files.[Group] = " + param + "ORDER BY Files.Id DESC");
SqlCommand theCommand = new SqlCommand(queryString, dbConnection);
dbConnection.Open();
SqlDataReader reader = theCommand.ExecuteReader();

int i = 0;

while (reader.Read())
{
i++;

HyperLink fileHl = new HyperLink();
fileHl.Text = reader["Name"].ToString();
fileHl.CssClass = "filelink" + i;
fileHl.ID = reader["Id"].ToString();
fileHl.NavigateUrl = String.Format("downloading.aspx?path={0}&file={1}", reader["Path"], reader["Name"]);
linktofiles.Controls.Add(fileHl);
linktofiles.Controls.Add(new LiteralControl("<br>"));
}

最佳答案

问题出在您的查询(而不是您的循环):

"SELECT Files.Id, Files.Name, Files.Date, Files.Path, Files.[Group] 
FROM Files,Groups
WHERE Files.[Group] = " + param +
"ORDER BY Files.Id DESC";

您需要在 FilesGroups 之间进行联接,否则您将执行 CROSS JOIN 并且将为 中的每个匹配行接收一行code>Files 乘以 Groups 中的行。

事实上,您应该简单地删除 Groups,因为您没有从该表中选择任何内容:

"SELECT Files.Id, Files.Name, Files.Date, Files.Path, Files.[Group] 
FROM Files
WHERE Files.[Group] = " + param +
"ORDER BY Files.Id DESC";

为了完整性,使用参数而不是连接文本。有助于避免 SQL 注入(inject)。

关于C# 循环、SQL 和检索信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9258719/

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