【发布时间】:2019-05-08 10:08:55
【问题描述】:
我在 c# 中有一个带有数据库的方法。现在我尝试返回该值,但因为该字符串是在 while 循环中创建的,所以它说它不存在。有没有办法返回字符串kampioen及其在while读取循环中创建的值?
public string getkampioen(string selecteditem)
{
using (MySqlConnection connection = new MySqlConnection(connectionString))
{
connection.Open();
string query = ("select * FROM clubs where naam = '" + selecteditem + "'");
MySqlCommand cmd = new MySqlCommand(query, connection);
MySqlDataReader Reader = cmd.ExecuteReader();
while (Reader.Read())
{
string kampioen = (string)Reader["aantalkampioenschappen"].ToString();
}
return kampioen;
}
}
【问题讨论】:
-
将变量的声明移出while作用域
-
按照您编写的代码,如果您的结果集返回
n记录,您将读取所有n值,但会丢弃第一个n - 1。你确定那是你想要的吗?根据您对这些数据集的确切期望,也许最好的方法根本不使用循环。 -
如果只想返回最后一条,为什么还要读取多条记录?为什么不首先获取您想要的一条记录?另外,请注意您的代码容易受到 SQL 注入的影响。您应该使用查询参数并将输入视为值而不是可执行代码。
-
另外,我认为值得指出的是(1)你不需要
select *,因为你只对一个字段的值感兴趣——select aantalkampioenschappen就足够了——和(2 ) 您应该使用参数而不是将selectedItem的值直接写入查询中。您现有的代码容易受到 SQL 注入攻击。
标签: c# mysql methods while-loop