EDIT: Спасибо всем, я понял, как заставить его работать сейчас! Подробности ниже ...C# - Использование таблицы базы данных для заполнения переменных
Я как бы новичок на C#, и я пытаюсь научить себя языку, программируя очень простую игру RPG.
Прямо сейчас, я нахожусь в точке, где я хочу начать добавлять разных врагов, чтобы сражаться (до сих пор я использовал только один жесткий диск для тестирования).
Я начал настраивать базу данных с информацией о враге (один столбец для имени, один для HP, один для общей статистики и атак и т. Д.). У меня это так, что, когда вы начинаете сражаться с врагом, игрок может выбрать существо из выпадающего списка, и какое бы то ни было существо, он установит переменную под названием «EnemyID».
Что я хочу сделать, это использовать переменную EnemyID для соответствия строке в моей базе данных, а затем вывести значение каждого столбца в переменные, которые я могу ссылаться во время боя.
Это что-то, что можно сделать? Если да, может ли кто-нибудь объяснить мне метод в относительно простых выражениях? Даже небольшой пример того, как импортировать данные строк из любой базы данных, я хорошо понимаю код, как только я вижу его в использовании несколько раз.
(Ах да, если это имеет значение, я использую Visual Studio Express 2013, и моя база данных представляет собой базу данных 2014 SQL Server Express.)
Спасибо заранее!
EDIT:
После поиска простого учебника для ADO.NET, и следуя предложению от одного из плакатов, я придумал следующий код.
public void DataPoll()
{
SqlConnection MonDat = new SqlConnection("Data Source=(local);
Initial Catalog=TestDatabase;Integrated Security=SSPI");
SqlDataReader rdr = null;
try
{
MonDat.Open();
SqlCommand cmd = new SqlCommand(
"select * from Monsters where Id = EnemyID", MonDat);
rdr = cmd.ExecuteReader();
while (rdr.Read())
{
EnemyIDBuffer = (int)rdr["Id"];
EnemyName = (string)rdr["Name"];
EnemyHPBase = (int)rdr["HP"];
EnemyAtkBase = (int)rdr["Atk"];
EnemyDefBase = (int)rdr["Def"];
EnemyMagBase = (int)rdr["Mag"];
PrimAtk = (string)rdr["PrimAtk"];
SecoAtk = (string)rdr["SecoAtk"];
TertAtk = (string)rdr["TertAtk"];
RareAtk = (string)rdr["RareAtk"];
}
}
finally
{
if (rdr != null)
{
rdr.Close();
}
if (MonDat != null)
{
MonDat.Close();
}
}
}
Однако, когда я пытаюсь запустить его, моя программа останавливается и падает. Я предполагаю, что у меня что-то настроено неправильно (я просто взял сценарий из учебника и немного изменил его). Может ли кто-нибудь дать мне понять, где я ошибся?
EnemyID - это переменная, которую я использовал, чтобы назначить, с каким противником бороться, на основе выбора меню. Я пытаюсь использовать эту переменную для генерации идентификатора строки, чтобы вытащить остальную часть данных строки, но я думаю, что это может вызвать проблему.
EDIT2: Мне потребовалось больше времени, чем нужно, но я понял это. Мне пришлось немного изменить свой код.
SqlCommand cmd = new SqlCommand(
"select * from Monsters where Id = " + EnemyID, MonDat);
У меня есть привычка забывать, что вы можете присоединиться к таким заявлениям. Я сделал новый проект, который только опросил данные и бросил их в мои переменные, а оттуда помещал их в текстовые поля, и с помощью этого метода я смог опросить два разных набора статистики врагов, присвоив разные значения EnemyID двум различным кнопкам. Доказательство концепции, прямо там.
Спасибо всем, кто ответил, оба предложения были одинаково полезны для этого. :)
Почему бы нам не показать, что вы сделали до сих пор ?? и tbh простая игра RPG - это ужасный стартовый проект. – Steve
У меня нет никакой причины показать, что у меня есть - я не получу никакой пользы, и никто больше не будет интересоваться. Поскольку это для того, ужасный стартовый проект ", почему? Создание компетентной системы RPG будет использовать так много разных функций, я думаю, что это идеальный способ изучить язык программирования. То есть до тех пор, пока вы не будете окутывать его, а я нет. –