<div class = "div">
<asp:Button style = "background-color: #007aff; width: 100%; padding: 5px" Text = "SAVE" OnClick = "Insert_Click" ID = "InsertID" runat = "server"/>
</div>
protected void Insert_Click(string StrImage, string StrMember, int intPersonalID, string StrFirstName, string StrLastName,
string StrSex, string StrEmail, string StrPhoneNumber, string StrAddress, string StrDateAdded, string StrEmergencyContact,
string StrEmergencyRelationship, string StrEmergencyPhone)
{
SqlCommand command;
SqlConnection connection;
connection = new SqlConnection(constStringConnection);
connection.Open();
command = new SqlCommand("Learner_Db_Edit", connection);
command.CommandType = CommandType.StoredProcedure;
command.Connection = connection;
command.Parameters.AddWithValue("Image", StrImage);
command.Parameters.AddWithValue("Member", StrMember);
command.Parameters.AddWithValue("PersonalID", intPersonalID);
command.Parameters.AddWithValue("Firstname", StrFirstName);
command.Parameters.AddWithValue("Lastname", StrLastName);
command.Parameters.AddWithValue("Sex", StrSex);
command.Parameters.AddWithValue("Email", StrEmail);
command.Parameters.AddWithValue("PhoneNumber", StrPhoneNumber);
command.Parameters.AddWithValue("Address", StrAddress);
command.Parameters.AddWithValue("DateAdded", StrDateAdded);
command.Parameters.AddWithValue("EmergencyContact", StrEmergencyContact);
command.Parameters.AddWithValue("EmergencyRelationship", StrEmergencyRelationship);
command.Parameters.AddWithValue("EmergencyPhone", StrEmergencyPhone);
command.ExecuteNonQuery();
connection.Close();
}
и моя база данных
ALTER PROCEDURE [dbo].[Learner_Db_Edit]
@id int,
@NewImage varchar(50),
@NewMember varchar(50),
@NewPersonalID varchar(50),
@NewFirstName varchar(50),
@NewLastName varchar(50),
@NewSex varchar(50),
@NewEmail varchar(50),
@NewPhoneNumber varchar(50),
@NewAddress varchar(50),
@NewDate varchar(50),
@NewEmergencyContact varchar(50),
@NewEmergencyRelationship varchar(50),
@NewEMergencyPhone varchar(50)
AS
UPDATE [dbo].[Members]
SET
Image = @NewImage,
Member = @NewMember,
PersonalID = @NewPersonalID,
Firstname = @NewFirstName,
Lastname = @NewLastName,
Sex = @NewSex,
Email = @NewEmail,
PhoneNumber = @NewPhoneNumber,
Address = @NewAddress,
DateAdded = @NewDate,
EmergencyContact = @NewEmergencyContact,
EmergencyRelationship = @NewEmergencyRelationship,
EmergencyPhone = @NewEMergencyPhone
WHERE ID = @id;
Я думал, что, возможно, проблема была с идентификатором, поскольку он не должен быть изменен из базы данных, но это было не так. Также пробовал с датой, потому что она не должна меняться, но нет. Пожалуйста помоги. Я знаю, что ошибка исходит от серверной части, но я не могу сказать, что мне не хватает.
при двойном нажатии на кнопку или в разметке введите
По клику=
Когда вы нажмете знак «=», вы получите Intel-sense, чтобы создать это:
Вы ДОЛЖНЫ позволить Visual Studio создать код заглушки, и он ДОЛЖЕН ВСЕГДА соответствовать этому на 100%:
Итак, после двойного щелчка по кнопке (из дизайнера) или ввода выше «onclick =» и выбора «Создать новое событие»?
Вы получаете такой код-заглушку:
protected void InsertID_Click(object sender, EventArgs e)
{
}
Вы не можете просто ни с того ни с сего ИЗМЕНИТЬ параметры события клика. Они должны и будут ВСЕГДА на 100% соответствовать указанному выше формату.
Таким образом, если вы покопаетесь и измените формат события нажатия кнопки, вы получите сообщение об ошибке, которое у вас есть.
просто закомментируйте существующую заглушку кода, позвольте VS воссоздать заглушку кода, а затем вы можете повторно вставить свой код внутри этого нового события щелчка.
Теперь, имея в виду вышеизложенное, ваш код клика будет примерно таким:
(но ОТКУДА берется «ID»? Я не вижу места, где вы устанавливаете, какой ID вы работаете ???
так это:
protected void InsertID_Click(object sender, EventArgs e)
{
{
using (SqlConnection conn = new SqlConnection("your con string"))
{
using (SqlCommand command = new SqlCommand("Learner_Db_Edit", conn))
{
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add("@NewImage",SqlDbType.NVarChar).Value = StrImage;
command.Parameters.Add("@NewMember", SqlDbType.NVarChar).Value = StrMember;
command.Parameters.Add("@NewPersonalID", SqlDbType.NVarChar).Value = intPersonalID;
command.Parameters.Add("@NewFirstname", SSqlDbType.NVarChar).Value = trFirstName;
command.Parameters.Add("@NewLastname", SqlDbType.NVarChar).Value = StrLastName;
command.Parameters.Add("@NewSex", SqlDbType.NVarChar).Value = StrSex;
command.Parameters.Add("@NewEmail", SqlDbType.NVarChar).Value = StrEmail;
command.Parameters.Add("@NewPhoneNumber", SqlDbType.NVarChar).Value = StrPhoneNumber;
command.Parameters.Add("@NewAddress", SqlDbType.NVarChar).Value = StrAddress;
command.Parameters.Add("@NewDateAdded", SqlDbType.NVarChar).Value = StrDateAdded;
command.Parameters.Add("@NewEmergencyContact", SqlDbType.NVarChar).Value = StrEmergencyContact;
command.Parameters.Add("@NewEmergencyRelationship", SqlDbType.NVarChar).Value = StrEmergencyRelationship;
command.Parameters.Add("@NewEmergencyPhone", SqlDbType.NVarChar).Value = StrEmergencyPhone;
command.ExecuteNonQuery();
}
}
}
}
ОДНАКО, вы не показываете, откуда берутся все эти строковые значения????
Возможно, нажатие кнопки должно получить + передать значения вашей процедуре со всеми этими значениями ??
Итак, выше приведен «воздушный код» и общая компоновка. Но вы еще не поделились, откуда берутся все эти строковые значения?
И также непонятно, почему в вашей базе данных и хранимой процедуре все столбцы имеют символьный тип, когда некоторые явно выглядят и должны быть типа int.