C# & SQL Server : update not working
本文关键字:update not working Server SQL amp | 更新日期: 2023-09-27 18:18:44
我正在编写一些代码,这意味着在我的数据库中更新数据,由于某种原因,当我按下更新按钮时,我得到了这个错误:
ExecuteNonQuery: Connection property has not initialized.
这是我的代码,它是我的INSERT
语句完美工作的副本,所以我不确定为什么这不工作。
private void button1_Click(object sender, EventArgs e)
{
sqlCommand2.CommandText = @"UPDATE Personal_Details
SET Title = '" + comboBox1.Text.Trim() + "', FIRSTNAME = '" +Txt_FirstName.Text.Trim()+ "', MIDDLENAME = '" + mIDDLENAMETextBox.Text.Trim() + "', '" + sURNAMETextBox.Text.Trim() + "', '" + cITYTextBox.Text.Trim() + "', '" + eMAILTextBox.Text.Trim() + "' WHERE PersonID = '"+personIDTextBox+"'";
sqlConnection1.Open();
sqlCommand2.ExecuteNonQuery();
sqlConnection1.Close();
}
您需要在调用ExecuteNonQuery
之前添加这一行sqlCommand2.Connection = sqlConnection1;
从这一部分我真的建议你阅读参数化查询和使用语句
我需要从Windows服务中解脱出来,所以我帮你做了…对史蒂夫的回答进行扩展……现在去阅读一下为什么参数化查询比你的方法更好(提示:安全性),并阅读一下using语句为你做了什么(提示:为你关闭并解除连接)。
编辑:
string mySql = @"UPDATE Personal_Details SET Title = @myTitle, FIRSTNAME = @myFirstName, MIDDLENAME = @myMiddleName, SURNAME = @mySurname, CITY = @myCity, EMAIL = @myEmail WHERE PersonID = @myPersonId";
using (SqlConnection conn = new SqlConnection(ConnectionString))
{
using (SqlCommand cmd = new SqlCommand(mySql, conn))
{
cmd.Parameters.AddWithValue("@myTitle", comboBox1.Text.Trim());
cmd.Parameters.AddWithValue("@myFirstName", Txt_FirstName.Text.Trim());
cmd.Parameters.AddWithValue("@myMiddleName", mIDDLENAMETextBox.Text.Trim());
cmd.Parameters.AddWithValue("@mySurname", sURNAMETextBox.Text.Trim());
cmd.Parameters.AddWithValue("@myCity", cITYTextBox.Text.Trim());
cmd.Parameters.AddWithValue("@myEmail", eMAILTextBox.Text.Trim());
cmd.Parameters.AddWithValue("@myPersonId", personIDTextBox.Text.Trim());
conn.Open();
int numberOfAffectedRows = command.ExecuteNonQuery();
}
}
您这边没有提供连接字符串。
var sqlConnection1 = new SqlConnection(@"give your connection string here");
SqlCommand sqlCommand2 = new SqlCommand();
sqlCommand2.CommandText = @"update query";
sqlCommand2.Connection = sqlConnection1;
sqlConnection1.Open();
sqlCommand2.ExecuteNonQuery();
sqlConnection1.Close();
使用参数以获得最佳结果。但是如果你不想使用参数,你可以使用下面的方法:-
string connetionString = null;
SqlConnection cnn ;
SqlCommand cmd ;
string sql = null;
connetionString = "Data Source=ServerName;Initial Catalog=DatabaseName;User ID=UserName;Password=Password";
sql = @"UPDATE Personal_Details
SET Title = '" + comboBox1.Text.Trim() + "', FIRSTNAME = '" +Txt_FirstName.Text.Trim()+ "', MIDDLENAME = '" + mIDDLENAMETextBox.Text.Trim() + "', '" + sURNAMETextBox.Text.Trim() + "', '" + cITYTextBox.Text.Trim() + "', '" + eMAILTextBox.Text.Trim() + "' WHERE PersonID = '"+personIDTextBox+"'";
cnn = new SqlConnection(connetionString);
try
{
cnn.Open();
cmd = new SqlCommand(sql, cnn);
cmd.ExecuteNonQuery();
cmd.Dispose();
cnn.Close();
}
catch (Exception ex)
{
MessageBox.Show("Error");
}
还在顶部添加:using System.Data.SqlClient;