Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 表中的C insert不起作用,但select工作正常_C#_Sql Server - Fatal编程技术网

C# 表中的C insert不起作用,但select工作正常

C# 表中的C insert不起作用,但select工作正常,c#,sql-server,C#,Sql Server,我在Windows Form C应用程序中工作,但遇到了一些问题。当我想从表中选择时,一切都很完美,但当我想在表中插入数据时,没有错误,我的应用程序说数据插入了数据库,但我的表是空的 这是我的连接: SqlConnection conexiune = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Baza-de-date.mdf;Integrated Security=True")

我在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版

对不起,我的英语不好 这至少是一个问题:

insert.ExecuteReader();
这是用于查询的,因为您正在读取数据。正如史蒂夫所指出的,它仍然可以工作——但事实并非如此

改为调用ExecuteOnQuery:

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

然而,真正的问题是Steve在评论中发现的——每次运行时都要复制数据库的新副本。因此,我希望您能在应用程序的一次执行中看到插入的结果,但在下次启动应用程序时,这些结果将丢失。

这是一个问题,至少:

insert.ExecuteReader();
这是用于查询的,因为您正在读取数据。正如史蒂夫所指出的,它仍然可以工作——但事实并非如此

改为调用ExecuteOnQuery:

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


然而,真正的问题是Steve在评论中发现的——每次运行时都要复制数据库的新副本。因此,我希望您能在应用程序的一次执行中看到insert的结果,但下次启动应用程序时,这些结果将丢失。

在sql server中运行相同的查询来检查您的查询可能是因为您在某处写入了错误的表名或列名 我猜当你们使用ID列的时候,你们必须把它作为身份 如果是这种情况,则不能在该列中插入值,它将自动获取该值


以标签或其他形式返回生成的查询,并在sql server中检查其工作是否正常。

在sql server中运行相同的查询以检查您的查询可能是因为您在某个地方写入了错误的表名或列名 我猜当你们使用ID列的时候,你们必须把它作为身份 如果是这种情况,则不能在该列中插入值,它将自动获取该值


以标签或其他形式返回生成的查询,并在sql server中检查其工作是否正常。

如果是您的情况,请告诉我:使用insert.ExecuteNonQuery;我认为,虽然要调用的正确方法是ExecuteOnQuery,但ExecuteReader也会执行传递的命令。区别在于在执行之前和之后通过方法构建的基础结构。问题是通常我不知道我的工具在做什么,即DataDirectory-复制到目标目录我解决了这个问题。我用这个连接地址替换了我的连接地址,现在一切都很完美。数据源=LocalDB\v11.0;AttachDbFilename=C:\Users\Alex\Desktop\Aplicie baza de date\Aplicie baza de date\Aplicie baza de date\baza-de-date.mdf;integratedsecurity=truel如果这是您的情况,请告诉我:使用insert.ExecuteNonQuery;我认为,虽然要调用的正确方法是ExecuteOnQuery,但ExecuteReader也会执行传递的命令。区别在于在执行之前和之后通过方法构建的基础结构。问题是通常我不知道我的工具在做什么,即DataDirectory-复制到目标目录我解决了这个问题。我用这个连接地址替换了我的连接地址,现在一切都很完美。数据源=LocalDB\v11.0;AttachDbFilename=C:\Users\Alex\Desktop\Aplicie baza de date\Aplicie baza de date\Aplicie baza de date\baza-de-date.mdf;Integrated Security=TrueOk,我替换了insert.ExecuteReader;使用insert.ExecuteNonQuery,但我也有同样的问题。谢谢你的回答@爱德华:检查方法调用的返回值。这将告诉您插入了多少行。您是否在任何地方使用事务?如果是这样,可能问题在于您没有提交它。@Jon,当我试图检查返回值时,我的应用程序显示Catch error。正如我在上面的评论中所说,ExecuteReader和ExecuteNonQuery都执行该命令。在我看来,问题在于DataDirectory和记录插入的数据库。Ok。谢谢,Jon,我将重建应用程序OK,我替换了insert.ExecuteReader;使用insert.ExecuteNonQuery,但我也有同样的问题。谢谢你的回答@爱德华:检查方法调用的返回值。这将告诉您插入了多少行。您是否在任何地方使用事务?如果是这样,可能问题在于您没有提交它。@Jon,当我试图检查返回值时,我的应用程序显示Catch error。正如我在ExecuteReader和Exe上面的评论中所说的那样
cuteNonQuery都执行该命令。在我看来,问题在于DataDirectory和记录插入的数据库。Ok。谢谢,Jon,我会重新构建应用程序