插入函数的ExecuteNonQuery已成功触发,但数据库未更新

时间:2014-10-05 14:53:10

标签: c# database sql-server-2012 sqlconnection windows-applications

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

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

我使用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>

2 个答案:

答案 0 :(得分:1)

嘿,我自己解决了这个问题

我只是用(| 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)&#34; Database.mdf&#34;文件..

答案 1 :(得分:0)

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

的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();
        }
    }