参数化查询可以在C#中与MySQL一起使用吗?

时间:2018-11-20 07:52:41

标签: c# mysql asp.net

我正在尝试使用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子句对查询进行了硬编码,并且效果很好。

请让我知道是否有人有任何建议。

谢谢

1 个答案:

答案 0 :(得分:0)

Read()只是将DataReader推进到下一条记录(这就是为什么它在循环中使用的原因)。您需要从该记录中提取数据

while (rdr.Read())
{
    int i = rdr.GetInt32(0);
    string s = rdr.GetString(1);
}