在c#中,INSERT INTO, UPDATE命令不能向SQL Server数据库中添加数据

本文关键字:Server SQL 数据库 添加 数据 命令 INSERT INTO UPDATE 不能 | 更新日期: 2023-09-27 18:11:37

非常抱歉我的问题。我知道有上千个和我一样的问题。然而,通过阅读以前的帖子,我仍然找不到任何解决我的问题的方法。

当我运行我的代码时,它不会抛出任何异常,它运行得很好,当使用INSERT INTO命令时仍然不会向我的数据库添加任何数据,也不会在使用UPDATE命令时更改数据。

另一方面,如果我用SELECT-FROM-WHERE查询替换try部分中的代码,并使用SqlDataReader读取数据,则它可以完美地工作。所以我认为连接本身没有问题。

下面是我的代码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace adatbázis_gyakorlás_s_sharp
{
  public partial class Form1 : Form
  {
    public Form1()
    {
        InitializeComponent();
    }
    private void Form1_Load(object sender, EventArgs e)
    {
        string kapcslink;
        kapcslink = adatbázis_gyakorlás_s_sharp.Properties.Settings.Default.kapcsolo;
        System.Data.SqlClient.SqlConnection con = new System.Data.SqlClient.SqlConnection(kapcslink);
        con.Open();
        try
        {
            string nev;
            int irsz;
            string telepules;
            nev = "Joseph";
            string lekerdezes = "INSERT INTO proba(nev) VALUES (@nev);";
            System.Data.SqlClient.SqlCommand parancs = new System.Data.SqlClient.SqlCommand();
            parancs.CommandText = lekerdezes;
            parancs.CommandType = CommandType.Text;
            parancs.Connection = con;
            parancs.Parameters.Add("@nev", SqlDbType.VarChar).Value="Joseph";
            parancs.ExecuteNonQuery();
        }
        catch(Exception err)
        {
            MessageBox.Show(err.Message);
        }
        con.Close();
    }
  }
}

有什么建议吗?

在c#中,INSERT INTO, UPDATE命令不能向SQL Server数据库中添加数据

整个User Instance和AttachDbFileName=方法是有缺陷的-充其量!当在Visual Studio中运行应用程序时,它将复制.mdf文件(从你的App_Data目录到输出目录-通常是.'bin'debug -你的应用程序运行的地方)和最有可能,你的INSERT工作得很好-但你只是在看错误的。mdf文件在最后!

如果你想坚持这种方法,然后尝试在myConnection.Close()调用上设置一个断点-然后用SQL Server Mgmt Studio Express检查.mdf文件-我几乎可以肯定你的数据在那里。

在我看来,真正的解决方案
  1. 安装SQL Server Express(你已经这样做了)

  2. install SQL Server Management Studio Express

  3. SSMS Express中创建数据库,给它一个逻辑名称(例如adatok)

  4. 使用它的逻辑数据库名(在服务器上创建时给出)连接到它,不要乱搞物理数据库文件和用户实例。在这种情况下,您的连接字符串类似于:

    Data Source=.''SQLEXPRESS;Database=adatok;Integrated Security=True
    

    和其他的都是和以前完全一样的

也可参阅Aaron Bertrand的优秀博客文章《坏习惯:使用AttachDbFileName获取更多背景信息》

好了,非常感谢大家!问题在于"复制到输出目录"设置。我搜索了bin文件夹,我发现我的。mdf文件的副本更新了!LOL

我将设置更改为"Copy if newer",所以它像我想的那样工作-除了bin目录中的文件每次都会更改,而不是原始文件夹中的文件。但即使在下一次运行中,这些变化仍然存在。我认为这是可以接受的……

虽然设置'不复制'不适合我。在构建项目时,我得到一个"尝试为文件c:' users ' joyce 'documents'visual studio 2013'Projects'adatbázis gyakorlás s-sharp'adatbázis gyakorlás s-sharp'bin'Debug'adatok附加一个自动命名的数据库"。mdf失败了。存在同名数据库、无法打开指定文件或位于UNC共享。"你知道什么可以用这个文件吗?有什么办法可以解决吗?

我的一般想法是从我的程序访问一个。mdf文件,这样就不需要使用sql服务器,数据库文件将位于程序目录的某个地方。你认为最大的问题是我的方法吗?: -)