我在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。
答案 0 :(得分:5)
这至少是 问题:
insert.ExecuteReader();
这意味着查询,因为您正在阅读数据。 (正如史蒂夫所说,它仍然有用 - 但它不是
改为呼叫ExecuteNonQuery
:
insert.ExecuteNonQuery();
此外,我建议使用using
语句而不是手动关闭资源。 (你也应该关闭SqlCommand
。)
但是,史蒂夫在评论中发现了真正的问题 - 您在每次运行时都在复制数据库的新副本。因此,我希望您在应用程序的一次执行中看到插入的结果,但是下次启动应用程序时它们会丢失。
答案 1 :(得分:0)
通过在sql server中运行相同来检查您的查询可能问题是您在某处写错了表或列名称 我猜你正在使用ID列,你必须保持身份 如果是这种情况,那么你不能插入一个值,它会自动获取该值。
在标签或其他内容中返回生成的查询,并在sql server中检查它是否正常工作..