C# 无法将数据插入 SQL Server 数据库

Posted

技术标签:

【中文标题】C# 无法将数据插入 SQL Server 数据库【英文标题】:C# cannot insert data into SQL Server database 【发布时间】:2016-05-12 08:37:12 【问题描述】:

我最近是 C# 的新手,并遵循关于连接数据库的教程,用于查看的连接或SELECT 命令是好的,我根据论坛的线程进行了一些修改以使我的代码更好,但是当我在INSERT 我的 SQL Server 中,我遇到了一些问题。我能够插入数据,但是当我重新运行程序时,我刚刚插入的数据不在数据库中。

这是我的插入代码

string commandText = "INSERT INTO loginInfo (name, pass, role) VALUES(@name, @pass, @role)";

using (connection = new SqlConnection(connectionString))

    SqlCommand command = new SqlCommand(commandText, connection);
    command.CommandType = CommandType.Text;

    command.Parameters.AddWithValue("@name", textBox1.Text);
    command.Parameters.AddWithValue("@pass", textBox2.Text);
    command.Parameters.AddWithValue("@role", textBox3.Text);

    try
    
        command.Connection.Open();
        command.ExecuteNonQuery();
    
    catch
    
    
    finally
    
        command.Connection.Close();
    

我正在尝试创建一个简单的 CRUD,但不保存数据...请帮助

【问题讨论】:

移除空的catch块并检查异常。它应该告诉你出了什么问题 ExecuteNonQuery 之后可以尝试关闭连接吗? +1 到 @doerig 。切勿保留空渔获物。请尝试逐步调试并检查您在哪里得到异常。执行非查询返回'int',它会告诉你插入的状态,数据是否插入。 @yok2xDuran using 将关闭连接,您不必使用 finally 块。您使用的整个 try/catch 块只是隐藏了错误,仅此而已 您能告诉我们您正在使用的连接字符串吗?我怀疑你可能在那里使用了AttachDbFileName= 子句,这会导致麻烦 【参考方案1】:

如果您在连接字符串中使用AttachDbFileName= 子句,您可能已经成为一个众所周知的问题的受害者:您可能只是在查看错误的数据库(文件)检查您的数据。

在 Visual Studio 中运行您的应用程序时,它将复制 .mdf 文件(从您的 App_Data 目录到输出目录 - 通常是 .\bin\debug - 您的应用程序运行的位置)并且很可能,您的 INSERT 工作正常 - 但您最终只是查看了错误的 .mdf 文件

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

我认为长期可行的解决方案是:

    安装 SQL Server Express(反正你已经完成了)

    安装 SQL Server Management Studio Express

    SSMS Express中创建你的数据库,给它一个逻辑名称(例如YourDatabase

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

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

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

有关更多背景信息,另请参阅 Aaron Bertrand 的优秀博文 Bad habits to kick: using AttachDbFileName。

【讨论】:

感谢它的工作,我安装了 SSMS Express 并且它工作了,我使用的数据库是一个基于服务的数据库,我可以通过右键单击资源管理器来添加它并添加服务基于数据库

以上是关于C# 无法将数据插入 SQL Server 数据库的主要内容,如果未能解决你的问题,请参考以下文章

使用 c# asp.net 获取 XML 数据并插入到 sql server

使用 C# 和 OPENJSON 将 JSON 插入 SQL Server 2016

尝试将数据插入多个表时出错 [C# Winform SQL Server] [关闭]

如何在 C# 控制台应用程序中使用 XmlTextReader 将 XML 数据插入 SQL Server 表?

在 SQL Server(C# 客户端)中批量插入大量数据的最快方法是啥

无法将数据从 DataSet 更新到 C# 和 SQL Server 上的数据库