C# SQL Server数据库不支持';关闭表格C后,不保存记录#

C# SQL Server数据库不支持';关闭表格C后,不保存记录#,c#,.net,sql-server,ado.net,C#,.net,Sql Server,Ado.net,我已经创建了一个游戏,但我想将用户保存到SQL Server数据库中。但一旦我关闭表单,所有记录都会丢失。但是当我返回到另一个表单并且没有关闭应用程序时,我会得到所有的记录 这是我在app.config Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\HighScores.mdf;Integrated Security=True 代码: 整个AttachDbFileName=方法是有缺陷的-最多!在Visu

我已经创建了一个游戏,但我想将用户保存到SQL Server数据库中。但一旦我关闭表单,所有记录都会丢失。但是当我返回到另一个表单并且没有关闭应用程序时,我会得到所有的记录

这是我在
app.config

Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\HighScores.mdf;Integrated Security=True
代码:

整个AttachDbFileName=方法是有缺陷的-最多!在Visual Studio中运行应用程序时,它将围绕
.mdf
文件进行复制(从
app\u Data
目录复制到输出目录-通常是
\bin\debug
-应用程序运行的地方)和最有可能是,您的
INSERT
工作正常-但您最后看到的是错误的.mdf文件

如果您想继续使用这种方法,请尝试在
myConnection.Close()
调用上放置一个断点,然后使用SQL Server Mgmt Studio Express检查
.mdf
文件,我几乎可以肯定您的数据在那里

我认为真正的解决办法是

  • 安装SQL Server Express(如果尚未安装)

  • 安装SQL Server Management Studio

  • 在SSMS Express中创建数据库,并为其指定一个逻辑名称(例如,
    HighScores

  • 使用其逻辑数据库名称连接到它(在服务器上创建时提供),不要乱动物理数据库文件和用户实例。在这种情况下,您的连接字符串类似于:

    Data Source=.\\SQLEXPRESS;Database=HighScores;Integrated Security=True
    
    其他一切都和以前一样

  • 更多背景信息,请参见Aaron Bertrand的优秀博客文章。

    整个AttachDbFileName=方法都有缺陷——最多!在Visual Studio中运行应用程序时,它将围绕
    .mdf
    文件进行复制(从
    app\u Data
    目录复制到输出目录-通常是
    \bin\debug
    -应用程序运行的地方)和最有可能是,您的
    INSERT
    工作正常-但您最后看到的是错误的.mdf文件

    如果您想继续使用这种方法,请尝试在
    myConnection.Close()
    调用上放置一个断点,然后使用SQL Server Mgmt Studio Express检查
    .mdf
    文件,我几乎可以肯定您的数据在那里

    我认为真正的解决办法是

  • 安装SQL Server Express(如果尚未安装)

  • 安装SQL Server Management Studio

  • 在SSMS Express中创建数据库,并为其指定一个逻辑名称(例如,
    HighScores

  • 使用其逻辑数据库名称连接到它(在服务器上创建时提供),不要乱动物理数据库文件和用户实例。在这种情况下,您的连接字符串类似于:

    Data Source=.\\SQLEXPRESS;Database=HighScores;Integrated Security=True
    
    其他一切都和以前一样

  • 更多背景信息,请参见Aaron Bertrand的优秀博客文章