SqlCommand.ExecuteNonQuery обычно используется для непосредственного выполнения операторов INSERT, UPDATE или DELETE, а не как часть IF.Имея это в виду, я предлагаю вам изменить свой код на:
if (accountCharCount > 0)
{
string query1 = "INSERT INTO playercharacter(id, connection_ID) VALUES((SELECT id FROM account WHERE connection_ID='" + connectionID + "'), (SELECT connection_ID FROM account WHERE connection_ID='" + connectionID + "'))";
using (MySqlCommand cmd = new MySqlCommand(query1, MySQL.mySQLsettings.connection))
{
try
{
cmd.ExecuteNonQuery();
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
throw;
}
}
}
Таким образом, вам нужен предыдущий вызов в базу данных, чтобы получить accountCharCount (account.char_count_max).В качестве альтернативы, вы можете поместить весь SQL-код в хранимую процедуру, а затем вызвать ее, используя один SqlCommand.ExecuteNonQuery.
Кстати, вы действительно должны использовать MySqlParameter для connection_ID, а не буквальную строку;это защитит вас от атак SQL-инъекций и станет хорошей привычкой.