连接和更改表单中的.mdf数据库

时间:2013-12-05 05:14:13

标签: c# database

我正在为一个大学项目开发​​一个非常简单的GUI RPG游戏。

项目需要GUI,数据库和某种交互性,我有GUI和交互性,但我在数据库部分遇到了很多麻烦。我是使用Microsoft Visual Studio 2012在C#中完成的。

当我点击购买武器时,我试图这样做,它会更新玩家的统计数据,然后将新的统计数据更新到数据库的userdata表,但我尝试的所有内容都会导致失败。

文件:

Form1.cs
Player.cs
Quest.cs
UserDatabase.dbml
DatabaseDataSet.xsd
Database.mdf
Battle.cs
Save.cs

Database.mdf中有一个UserData表。

我对数据库的唯一经验是使用数据源在表单中显示整个表,但我无法弄清楚如何获取可变数据并将其放入数据库,或者从中获取数据数据库并将其放入变量中。

以下是我在文件中的代码。我知道我的代码很糟糕,我应该为我的大部分工作做准备,但我只是关心让数据库在这一点上工作,因为它应该在星期五6号到期,我不知道如何让它发挥作用。

更新 我实际上开始使用this for an example来解决这个问题 Form1.cs与尝试连接数据并将数据保存到数据库相关的代码:

 private void saveButton_Click(object sender, EventArgs e)
        {

            Database db = new Database(@"Database.mdf");
            Capstone.Save save = new Capstone.Save()
            {
                name = player.name,
                job = player.job,
                weapon = player.weapon,
                armor = player.armor,
                acc1 = player.accessory1,
                acc2 = player.accessory2,
                gold = player.gold,
                eridium = player.eridium,
                exp = player.exp,
                level = player.level,
                str = player.strength,
                magic = player.magic,
                def = player.defense,
                health = player.health,
                mana = player.mana,
                pots = player.pots

            };
            db.userdata.InsertOnSubmit(save);
            try
            {
                db.SubmitChanges;
            }
            catch (Exception i)
            {

            }


        }
public class Save
    {
        public string name = "";
        public string job = "";
        public int weapon = 0;
        public int armor = 0;
        public int acc1 = 0;
        public int acc2 = 0;
        public int gold = 0;
        public int eridium = 0;
        public int exp = 0;
        public int level = 0;
        public int str = 0;
        public int magic = 0;
        public int def = 0;
        public int health = 0;
        public int mana = 0;
        public int pots = 0;
    }

Database.mdf UserData表的SQL代码:

CREATE TABLE [dbo].[UserData] (
      [name]    NVARCHAR (50) NULL,
      [job]     NCHAR (10)    NULL,
      [weapon]  INT           NULL,
      [armor]   INT           NULL,
      [acc1]    INT           NULL,
      [acc2]    INT           NULL,
      [gold]    INT           NULL,
      [eridium] INT           NULL,
      [exp]     INT           NULL,
      [level]   INT           NULL,
      [str]     INT           NULL,
      [magic]   INT           NULL,
      [def]     INT           NULL,
      [health]  INT           NULL,
      [mana]    INT           NULL,
      [pots]    INT           NULL
  );

1 个答案:

答案 0 :(得分:0)

看起来你正在使用LINQ to SQL(给定DBML文件)。我看到一个datacontext类,它可以让你链接到数据库,但你实际上并没有初始化它或在任何地方使用它。

您的一般步骤将是:

  • 实例化一个新的datacontext对象(代码中的数据库)。
  • 创建新的实体对象(UserData对象)
  • 填充UserData对象的字段。
  • 如果数据库不存在,则将其添加到数据库,或者更新现有的数据库 数据库是否存在。

查看http://msdn.microsoft.com/library/bb399398.aspx及其子代,了解有关代码应该是什么样子的更多信息。