Давайте начнем с некоторыми основами:
Не используйте имена столбцов, как это, а также таблицы имена. Это плохая практика.
Использование SqlParameter
для вашего SqlCommand
, чтобы предотвратить SQL-инъекции
Используйте различные классы для BusinesLayer
, DataAccessLayer
Вот как этот вид в коде на странице ASPX:
private void btnUpdatePersonalDetails_Click(object sender, EventArgs e)
{
if (rndMale.Checked == true)
{
gender = "Male";
}
else
{
if (rndFemale.Checked == true)
{
gender = "Female";
}
}
PersonalDetails personDetails = new PersonalDetails();
personalDetails.UpdateDetails(txtFirstName.Text, txtLastName.Text, txtAge.Text, txtHeight.Text,txtAverageRestingHeartRate.Text, txtContactNumber.Text, txtAddress.Text, gender, GlobalUserName.username);
}
Категория объекта Business
-> здесь Я буду используйте переименованные столбцы. Вы должны переименовать свои столбцы в базе данных.
public void UpdateDetails(string firstName, string lastName, string age, string height, string avgHeartRate, string contactNumber, string address, string gender, string userName)
{
SqlCommand cmd = new SqlCommand(@"
UPDATE
PersonalDetails
SET
FirstName = @FirstName,
LastName = @LastName,
Age = @Age,
Height = @Height,
AvgHeartRate = @AvgHeartRate,
ContactNumber = @ContactNumber
Address = @Address,
Gender = @Gender
WHERE
UserName = @UserName
");
cmd.Parameters.AddWithValue("@FirstName", firstName);
cmd.Parameters.AddWithValue("@LastName", lastName);
cmd.Parameters.AddWithValue("@Age", age);
cmd.Parameters.AddWithValue("@Height", height);
cmd.Parameters.AddWithValue("@AvgHeartRate", avgHeartRate);
cmd.Parameters.AddWithValue("@ContactNumber", contactNumber);
cmd.Parameters.AddWithValue("@Address", address);
cmd.Parameters.AddWithValue("@Gender", gender);
cmd.Parameters.AddWithValue("@UserName", userName);
SqlManager.ExecuteNonQuery(cmd);
}
Вот SqlManager
класс с двумя методами:
public static int ExecuteNonQuery(SqlCommand cmd)
{
SqlConnection conn = GetSqlConnection(cmd);
try
{
return cmd.ExecuteNonQuery();
}
catch
{
throw;
}
finally
{
conn.Close();
}
}
public static SqlConnection GetSqlConnection(SqlCommand cmd)
{
if (cmd.Connection == null)
{
SqlConnection conn = new SqlConnection(ConnectionString);
conn.Open();
cmd.Connection = conn;
return conn;
}
return cmd.Connection;
}
Если писать имена столбцов правильно это будет обновлять свои личные данные без проблем. Я написал базовый уровень доступа к данным в этом вопросе: checking user name or user email already exists. Вы можете проверить это, если хотите.
У вас действительно есть столбец с именем 'Height (cm)'? –
Это помогает, если вы объясните, что он должен делать, и какие сообщения об ошибках вы получаете, если они есть. –
Ничего себе, это действительно как не делать SQL в C#. Он подвержен инъекциям SQL. Он склонен к тому, что кто-то просто не выбирает пол. Это ужасно. У вас есть имена полей «Высота (см)»? Вау. В самом деле. Вау. – nvoigt