我正在尝试使用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子句对查询进行了硬编码,并且效果很好。
请让我知道是否有人有任何建议。
谢谢
答案 0 :(得分:0)
Read()
只是将DataReader
推进到下一条记录(这就是为什么它在循环中使用的原因)。您需要从该记录中提取数据
while (rdr.Read())
{
int i = rdr.GetInt32(0);
string s = rdr.GetString(1);
}