C# 连接并更改表单中的.mdf数据库

C# 连接并更改表单中的.mdf数据库,c#,database,C#,Database,我正在为一个大学项目开发一个非常简单的GUI rpg游戏 该项目需要一个GUI、数据库和某种交互功能,我有GUI和交互功能,但我在数据库部分遇到了很多问题。我正在用C#使用Microsoft Visual Studio 2012进行此操作 我试图做到这一点,当我在武器上单击“购买”时,它会更新玩家的统计数据,然后应该将新的统计数据更新到数据库的userdata表中,但我尝试的所有操作都会失败 档案: Form1.cs Player.cs Quest.cs UserDatabase.dbml Da

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

该项目需要一个GUI、数据库和某种交互功能,我有GUI和交互功能,但我在数据库部分遇到了很多问题。我正在用C#使用Microsoft Visual Studio 2012进行此操作

我试图做到这一点,当我在武器上单击“购买”时,它会更新玩家的统计数据,然后应该将新的统计数据更新到数据库的userdata表中,但我尝试的所有操作都会失败

档案:

Form1.cs
Player.cs
Quest.cs
UserDatabase.dbml
DatabaseDataSet.xsd
Database.mdf
Battle.cs
Save.cs
Database.mdf
中有一个
UserData

我在数据库方面的唯一经验是使用数据源以一种形式显示整个表,但我一辈子都不知道如何获取变量数据并将其放入数据库,或者从数据库获取数据并将其放入变量

以下是我对文件中的代码的了解。我知道我的代码很糟糕,我应该被枪毙,因为我在做大多数事情,但我只关心让数据库在这一点上工作,因为它是在6号周五到期,我不知道如何让它工作

已更新 实际上,我开始用
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;
    }
数据库.mdf的SQL代码
UserData
表:

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
  );

看起来您正在使用LINQtoSQL(给定DBML文件)。我看到一个datacontext类,它允许您链接到数据库,但实际上您并没有初始化它或在任何地方使用它

您的一般步骤是:

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

有关代码应该是什么样子的详细信息,请查看及其子项。

请将代码简化为与您的问题无关的内容。现在还不清楚你在C代码中的什么地方试图访问DB或类似的东西。-1因为你不可能指望我读所有这些