Привет, У меня возникли проблемы с созданием кнопки обновления для моего сайта. Я пробовал много методов, но, похоже, не могу понять. Я хотел бы, чтобы пользователь вводил идентификационный номер клиента, который они хотят обновить, затем заполните текстовое поле в соответствии с столбцами, которые они хотят изменить.Как обновить запись базы данных vs12 C#
Вот мой код:
private static OleDbConnection GetConnection()
{
String connString;
connString = @"Provider=Microsoft.JET.OLEDB.4.0;Data Source=C:\Users\Wisal\Documents\Visual Studio 2012\WebSites\WebSite3\registration-Db.mdb";
return new OleDbConnection(connString);
}
protected void clientUpdate_Click(object sender, EventArgs e)
{
OleDbConnection cn = new OleDbConnection("Provider=Microsoft.JET.OLEDB.4.0;Data Source=C:/Users/Wisal/Documents/Visual Studio 2012/WebSites/WebSite3\registration-Db.mdb");
cn.Open();
OleDbCommand cmd = new OleDbCommand("(Update client set id = " + txt_id.Text + " ,[name] ='" + txt_name.Text + " ,[password] ='" + txt_password.Text +" where id= '" + txt_id.Text + "",cn);
cmd.ExecuteNonQuery();
cn.Close();
}
}
Я также попытался это:
private static OleDbConnection GetConnection()
{
String connString;
connString = @"Provider=Microsoft.JET.OLEDB.4.0;Data Source=C:\Users\Wisal\Documents\Visual Studio 2012\WebSites\WebSite3\registration-Db.mdb";
return new OleDbConnection(connString);
}
protected void clientUpdate_Click(object sender, EventArgs e)
{
OleDbConnection myConnection = GetConnection();
myConnection.Open();
OleDbCommand cmd = new OleDbCommand("(Update client set id = " + txt_id.Text + " ,[name] ='" + txt_name.Text + " ,[password] ='" + txt_password.Text +" where id= '" + txt_id.Text + "",myConnection);
cmd.ExecuteNonQuery();
myConnection.Close();
}
}
С этим я получаю "ошибка синтаксиса в накидной запросе."
Я попытался это тоже:
protected void clientUpdate_Click(object sender, EventArgs e)
{
OleDbConnection myConnection = GetConnection();
myConnection.Open();
OleDbCommand cmd = new OleDbCommand("Update client set [name] = ? [password] = ? where id= ?", myConnection);
cmd.Parameters.AddWithValue("", txt_id.Text);
cmd.Parameters.AddWithValue("", txt_name.Text);
cmd.Parameters.AddWithValue("", txt_password.Text);
cmd.ExecuteNonQuery();
myConnection.Close();
}
}
Вы должны поймать любое исключение, но кажется, что в вашей строке sql отсутствует много (одна кавычка). –
У вас несколько проблем с безопасностью. Вам нужно использовать параметризованные запросы, и пароли никогда не должны храниться в открытом тексте в базе данных (вместо этого используйте соленые односторонние хэши). – mason
Посмотрите на свой CommandText, скорее всего, это причина вашего исключения. – KiwiPiet