【发布时间】:2018-11-20 07:52:40
【问题描述】:
我正在尝试使用 C# 中的参数运行查询。我遇到了一个没有返回行的问题。我正在从文件中提取 sql 并将其放入命令文本中。运行查询(SELECT 语句)时,不返回任何结果。我已经确认结果在我的数据库中,并且通过正常运行查询是正确的(在替换参数之后)。
conn.Open();
//create the command
var command = conn.CreateCommand();
//Read sql from file
FileInfo file = new FileInfo("SQL/GetPage.sql");
string script = file.OpenText().ReadToEnd();
command.CommandText = script;
command.Parameters.AddWithValue("?PageID", PageName);
command.Prepare();
MySqlDataReader rdr = command.ExecuteReader();
rdr.Read();
SQL:
SELECT * FROM `Page` WHERE PageID = '?PageID'
我已经尝试过准备和不准备。我不知道为什么它不起作用。另外,我只期望一个结果最大值(PageID 是唯一的),所以这就是它不在循环中的原因。我也知道我的连接很好,因为我在没有 where 子句的情况下对查询进行了硬编码,它运行良好。
如果有人有任何建议,请告诉我。
谢谢
【问题讨论】:
-
您的查询需要一个 ID,而您提供了一个名称?
-
我讨厌看到你这样受苦 :-) 获取 QueryFirst,将你的 sql 粘贴到 QueryFirst 模板中(就像你已经拥有的 .sql 文件)。将为您生成所有这些阅读器、参数、连接和命令代码。你只需要调用生成的 ExecuteScalar() 方法,你就会得到你的整数。免责声明:我写的是 QueryFirst。