插入函数的ExecuteNonQuery已成功激发,但数据库没有';t更新

本文关键字:数据库 更新 ExecuteNonQuery 函数 成功 插入 | 更新日期: 2023-09-27 18:25:33

我尝试将数据插入数据库,所有操作都成功完成,但SQL查询执行后数据库不会更新。它是基于windows的应用程序。我把连接字符串放在app.config文件中。

当我运行此应用程序代码时。并插入数据,它会向我显示消息"插入的数据",但当我检查数据库时,数据库中没有更新的数据。。。。给我一些解决方案。

我使用Visual Studio 2013和SQL Server 2012。

这是我的代码:

namespace Sample
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                SqlConnection sqlcon = new SqlConnection(ConfigurationManager.ConnectionStrings["cons"].ConnectionString.ToString());
                sqlcon.Open();
                string str = "insert into tab(name,pwd) values('" + textBox1.Text.ToString() + "','" + textBox2.Text.ToString() + "')";
                SqlCommand cmd = new SqlCommand(str, sqlcon);
                cmd.ExecuteNonQuery();
                MessageBox.Show("Data inserted");
                cmd.Clone();
            }
            catch(Exception E)
            {
                MessageBox.Show("No data inserted");
            }
        }
    }
}

App.config

<configuration>
   <connectionStrings>
      <add name="cons" 
           connectionString="Data Source=(LocalDB)'v11.0;AttachDbFilename='|DataDirectory|'Database1.mdf';Integrated Security=True"/>
   </connectionStrings>
</configuration>

插入函数的ExecuteNonQuery已成功激发,但数据库没有';t更新

嘿,我自己解决这个问题

我只是用(|DataDirectory|''Database.mdf)替换连接字符串中的完整路径……就像这个

<configuration>
<connectionStrings>
<add name="cons" connectionString="Data Source=(LocalDB)'v11.0;AttachDbFilename='C:'Users'Dhaval'documents'visual studio 2013'Projects'Sample'Sample'Database.mdf';Integrated Security=True"/>
</connectionStrings>
</configuration>

因此连接字符串访问应用程序的权限数据库。。不是(.''bin''debug)"数据库.mdf"文件。。

首先,为了防止注入攻击和避免语法错误,请使用参数。其次,为了确保资源得到妥善处理,请使用"使用"语句。第三,显示抛出的错误消息。以下(未经测试的)代码说明了这些技术。另外,cmd.Clone()的作用是什么?

     private void button1_Click(object sender, EventArgs e)
    {
        SqlConnection sqlcon = new SqlConnection(ConfigurationManager.ConnectionStrings["cons"].ConnectionString.ToString());
        try
        {
            using (sqlcon)
            {
                sqlcon.Open();
                string str = "insert into tab(name,pwd) values(@Value1, @Value2)";
                using (SqlCommand cmd = new SqlCommand(str, sqlcon))
                {
                    cmd.Parameters.Add(new SqlParameter("Value1", TextBox1.Text));
                    cmd.Parameters.Add(new SqlParameter("Value2", TextBox2.Text));
                    cmd.ExecuteNonQuery();
                    MessageBox.Show("Data inserted");
                    //cmd.Clone(); 
                }
            }
        }
        catch (Exception E)
        {
            throw new Exception(E.Message);
        }
        finally
        {
            sqlcon.Close();
        }
    }