表中的C#插入不起作用,但选择工作完美

时间:2014-07-27 08:33:15

标签: c# sql-server

我在Windows Form C#应用程序中工作,但我遇到了一些麻烦。当我想从表中选择一切都很完美,但当我想在我的表中插入数据没有错误,我的应用程序说“数据已插入数据库”,但我的表是空的。

这是我的联系:

SqlConnection conexiune = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Baza-de-date.mdf;Integrated Security=True"); 

这是我的代码:

 try
     {
         SqlCommand insert = new SqlCommand("INSERT INTO [dbo].[Tabel] ([ID], [Nume], [Prenume], [Varsta]) VALUES (@id, @nume,@prenume,@varsta)", conexiune);
         insert.Parameters.AddWithValue("@id",textBox1.Text);
         insert.Parameters.AddWithValue("@nume", textBox2.Text);
         insert.Parameters.AddWithValue("@prenume", textBox3.Text);
         insert.Parameters.AddWithValue("@varsta", textBox4.Text);
         conexiune.Open();
        insert.ExecuteReader();
         MessageBox.Show("Datele au fost introduse cu succes in baza de date!", "Succes!", MessageBoxButtons.OK, MessageBoxIcon.Information);

     }
     catch
     {
         MessageBox.Show("A avut loc o eroare! Te rog sa incerci din nou", "Eroare!", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
     }
     finally
     {
         conexiune.Close();
         this.Close();
     }

我正在使用Visual Studio 2013和Microsoft SQL Server版本11.00.3000。

  • 对不起我的英文

2 个答案:

答案 0 :(得分:5)

这至少是 问题:

insert.ExecuteReader();

这意味着查询,因为您正在阅读数据。 (正如史蒂夫所说,它仍然有用 - 但它不是

改为呼叫ExecuteNonQuery

insert.ExecuteNonQuery();

此外,我建议使用using语句而不是手动关闭资源。 (你也应该关闭SqlCommand。)

但是,史蒂夫在评论中发现了真正的问题 - 您在每次运行时都在复制数据库的新副本。因此,我希望您在应用程序的一次执行中看到插入的结果,但是下次启动应用程序时它们会丢失。

答案 1 :(得分:0)

通过在sql server中运行相同来检查您的查询可能问题是您在某处写错了表或列名称 我猜你正在使用ID列,你必须保持身份 如果是这种情况,那么你不能插入一个值,它会自动获取该值。

在标签或其他内容中返回生成的查询,并在sql server中检查它是否正常工作..