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 表?