选择带字符串值返回

use*_*814 2 c# string select return

我有一个应用程序C#连接并在数据库中做一些事情,所以我需要在表中找到一个序列号并返回它,我这样做但我有一个问题:

public int Select_Begin(string serial)
{
   string query = "SELECT serial FROM `compteur_mono` WHERE   serial = " + serial + ";";
   //Open connection
   MySqlCommand cmd = new MySqlCommand(query, connection);
   if (this.OpenConnection() == true)
   {
      int numero = cmd.ExecuteNonQuery();
      return numero;
   }
   else
   {
      return 0;
   }
}
Run Code Online (Sandbox Code Playgroud)

当我执行时,结果总是-1但是当我这样做时:

public string Select_Begin(string serial)
{
   string query = "SELECT serial FROM `compteur_mono` WHERE   serial = " + serial + ";";
   //Open connection
   MySqlCommand cmd = new MySqlCommand(query, connection);
   if (this.OpenConnection() == true)
   {
       string serial = cmd.ExecuteNonQuery();
       return serial;
   }
   else
   {
      return null;
   }
}
Run Code Online (Sandbox Code Playgroud)

出现此错误:错误1无法将类型'int'隐式转换为'string'

一些帮助请,我不会使用dataReader,因为我只有一个序列返回它:*谢谢

Mar*_*ell 8

ExecuteNonQuery 不期望查询.SELECT serial是一个查询.改变它ExecuteScalar并且一切都会起作用.using如果可能的话,你应该添加一些语句和参数化,注意.

const string query =
    "SELECT serial FROM `compteur_mono` WHERE serial = @serial;";

using(var cmd = new MySqlCommand(query, connection))
{
    cmd.Parameters.AddWithValue("@serial", serial);
    if (this.OpenConnection())
    {
        return (string)cmd.ExecuteScalar();
    }
    return null;
}
Run Code Online (Sandbox Code Playgroud)

或者用"小巧玲珑":

return connection.Query<string>(
    "SELECT serial FROM `compteur_mono` WHERE serial = @serial;",
    new { serial }).SingleOrDefault();
Run Code Online (Sandbox Code Playgroud)