C#不能在C#中的数据插入SQL Server数据库
我最近新,并按照教程上连接到数据库,用于查看或SELECT
命令连接是好的,我做了一些修改基于论坛做出的线程我的代码更好,但是当我在我的SQL Server的INSERT
中时,出现了一些问题。我能够插入数据,但是当我重新运行程序时,刚才插入的数据不在数据库中。C#不能在C#中的数据插入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,但不保存数据......请帮助
如果您使用的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中快速
创建您的数据库在SSMS Express,给它一个逻辑名称(例如
YourDatabase
)-
连接使用其逻辑数据库名称(当你在服务器上创建它给出)它 - 和周围不乱用物理数据库文件和用户实例。在这种情况下,您的连接字符串将是这样的:
Data Source=.\\SQLEXPRESS;Database=YourDatabase;Integrated Security=True
和其他一切是正是和以前一样......
另见阿龙贝特朗的优秀博客文章Bad habits to kick: using AttachDbFileName更多背景信息。
谢谢它的工作,我安装了SSMS Express和它的工作,我的数据库,我使用的是一个基于服务的数据库,我能通过右键单击资源管理器并添加基于服务的数据库来添加它 – yok2xDuran
取出空catch块,并检查异常。它会告诉你什么是错的 – doerig
你可以尝试关闭'ExecuteNonQuery'后连接? –
+1 @doerig。永远不要空着。请尝试一步一步的调试,并检查你在哪里得到异常。执行非查询返回'int',它将告诉你插入的状态,是否插入数据。 –