編輯:謝謝大家,我想出瞭如何讓它現在工作!下面的細節...C# - 使用數據庫表來填充變量
我是一個C#的新手,我試圖通過編程一個非常簡單的RPG遊戲來教我自己的語言。
現在,我正要開始添加不同的敵人進行戰鬥(直到現在我只用一個硬編碼進行測試)。
我已經開始建立一個包含敵方信息的數據庫(一個名稱列,一個惠普陣列,一個常見統計數據和攻擊等)。我擁有它,當你與敵人展開戰鬥時,玩家可以從下拉列表中選擇一個生物,並且他擁有的任何生物都會設置一個名爲「EnemyID」的變量。
我想要做的就是使用EnemyID變量來對應我的數據庫中的一行,然後將每列的值拉入我可以在戰鬥中引用的變量。
這是可以做的事嗎?如果是這樣,有人能以相對簡單的方式向我解釋這個方法嗎?即使只是從任何類型的數據庫導入行數據的一個小例子都可以,我很好的理解代碼,一旦我看到它使用了幾次。
(噢,如果它很重要,我使用Visual Studio Express的2013,我的數據庫是SQL Server Express的2014數據庫。)提前
謝謝!
編輯:
找到了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是一個變量,用於根據菜單選擇分配敵人的戰鬥力。我試圖使用該變量來生成行ID以從其他行中提取數據,但我認爲這可能會導致問題。編輯2:花了我比實際應有的時間更長,但我明白了。我不得不稍微改變我的代碼。
SqlCommand cmd = new SqlCommand(
"select * from Monsters where Id = " + EnemyID, MonDat);
我有一種習慣,忘記了你能夠加入像這樣的語句。我做了一個新項目,只調查數據並將其放入我的變量中,然後將其放入文本框中,通過將不同的EnemyID值分配給兩個不同的按鈕,我可以輪詢兩組不同的敵人統計值。概念證明,就在那裏。
感謝這兩位回覆的人,這兩個建議對於使這項工作同樣有用。 :)
爲什麼不告訴我們你到目前爲止做了什麼?和一個簡單的RPG遊戲是一個可怕的入門項目 – Steve 2014-10-16 20:43:01
沒有什麼理由讓我展示自己有什麼 - 我不會得到任何好處,也沒有其他人會感興趣。因爲它是一個「可怕的首發項目「,爲什麼?構建一個能勝任的RPG系統將使用許多不同的功能,我認爲這是學習編程語言的完美方式。 也就是說,只要你不半屁吧,我不是。 – 2014-10-16 23:41:08