插入函数的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>
嘿,我自己解决这个问题
我只是用(|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();
}
}