在 ASP.NET C# 中将数据插入 Visual Studio LocalDB

Insert data into Visual Studio LocalDB in ASP.NET C#

我有一个 Windows 网络应用程序并在 App_Data 文件夹中创建了一个 .mdf 文件,我正在尝试将数据插入到已创建的 table 中.

它能够使用基本的 SELECT * 语句检索代码,但我无法插入数据,这是我的代码:

private void Update(string username)
{
    SqlConnection con = new SqlConnection(@"MYSQLCONNECTION");
    con.Open();

    SqlCommand cmd = new SqlCommand();
    cmd.CommandType = CommandType.Text;
    string bcd = "INSERT INTO NameList(name) VALUES (@paraUsername)";
    cmd = new SqlCommand(bcd, con);
    cmd.Parameters.AddWithValue("@paraUsername", username);

    cmd.ExecuteNonQuery();
    list.Update();

    con.Close();
}

这段代码过去对我有用,但这次不起作用。没有显示错误,但数据没有插入 table。

这就是我在 button_click 方法中调用方法的方式:

Update(tbName.text);

可能是什么问题?

假设你有一个

AttachDbFileName=......

连接字符串中的部分 - 那么这是一个已知问题:

整个 AttachDbFileName= 方法是有缺陷的 - 充其量!当 运行 你的应用程序在 Visual Studio 时,它将围绕 .mdf 文件进行复制(从你的 App_Data 目录到输出目录 - 通常是 .\bin\debug - 你应用程序运行)并且很可能,你的INSERT工作得很好 - 但你只是在查看错误的.mdf文件结束!

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

我认为真正的解决方案

  1. 安装 SQL Server Express(无论如何你已经完成了)

  2. 安装SQL Server Management Studio Express

  3. SSMS Express 中创建您的数据库,为其指定一个合乎逻辑的名称(例如 YourDatabase

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

    Data Source=.\SQLEXPRESS;Database=YourDatabase;Integrated Security=True
    

    其他一切完全和以前一样...

另请参阅 Aaron Bertrand 的精彩博客 post Bad habits to kick: using AttachDbFileName 了解更多背景信息。