【发布时间】:2023-04-03 16:15:02
【问题描述】:
这需要一些解释。我是 ASP 的新手,来自 PHP。完全不同的世界。使用 MySql Connecter/Net 库,我决定制作一个数据库包装器,它具有相当数量的 fetch 方法,其中一个是“FetchColumn()”方法,它简单地将字符串作为其参数并使用以下实现:
public object FetchColumn(string query)
{
object result = 0;
MySqlCommand cmd = new MySqlCommand(query, this.connection);
bool hasRows = cmd.ExecuteReader().HasRows;
if (!hasRows)
{
return false;
}
MySqlDataReader reader = cmd.ExecuteReader();
int count = 0;
while(reader.HasRows)
{
result = reader.GetValue(count);
count++;
}
return result;
}� return result;
}public object FetchColumn(string query)
我正在寻找的是一种返回 false IF 的方法,并且仅当查询尝试获取不存在的结果时。问题是,在我的实现中,它会引发错误/异常。可以这么说,我需要它在运行时“优雅地失败”。我应该提到的一件事是,通过这个实现,一旦分配了布尔值“hasRows”,应用程序就会抛出错误。为什么会这样,我不知道。
那么,有什么想法吗?
【问题讨论】:
-
恐怕您需要阅读 C# 基础知识。我不认为
result会像你想象的那样。您应该可以跳过对ExecutReader()的第二次呼叫。你到底在用count做什么? -
Fetch 接受字符串的命令是危险的。如果你不小心,你会发现你的数据库很快就被篡改了。了解如何进行参数化查询。
标签: c# asp.net mysql exception error-handling