代码之家  ›  专栏  ›  技术社区  ›  Roy

SQL C#:结果未返回任何内容。读取()

  •  -1
  • Roy  · 技术社区  · 7 年前

    当我使用此代码时,返回null。但当我尝试使用sql查询时,我得到了正常的结果。

    public byte[] GetInfo(UnturnedPlayer player , string vehiclename)
            {
                try
                {
                    MySqlConnection connection = createConnection();
                    MySqlCommand command = connection.CreateCommand();
                    command.CommandText = "select `info` from `" + GaragePlugin.Instance.Configuration.Instance.DatabaseTableName + "` where `player` = '@id' AND `vname` = '@name';";
                    connection.Open();
                    command.Parameters.AddWithValue("@id", player.CSteamID);
                    command.Parameters.AddWithValue("@name", vehiclename);
                    Console.WriteLine(command.CommandText.Replace("@id", player.CSteamID.ToString()).Replace("@name", vehiclename));
                    var result = command.ExecuteScalar();
                    if(result != null)
                    {
                        Console.WriteLine(result.ToString(), ConsoleColor.Blue);
                        byte[] bytearray = Convert.FromBase64String(result.ToString());
                        return bytearray;
                    }
                    connection.Close();
                    return new byte[500];
                }
                catch (Exception ex)
                {
                    Logger.Log("Error with GetInfo: " + ex);
                    return new byte[500];
                }
            }
    

    返回字节[500]。有什么办法可以解决吗? 谢谢

    1 回复  |  直到 7 年前
        1
  •  0
  •   w0051977    7 年前

    我认为您的SQL语句应该如下所示:

    command.CommandText = "select info from " + GaragePlugin.Instance.Configuration.Instance.DatabaseTableName + " where player = @id AND vname = @name;
    

    您的参数应添加到集合中,如下所示:

    command.Parameters.AddWithValue(@id, player.CSteamID);
    command.Parameters.AddWithValue(@name, vehiclename);