#c# #asp.net #gridview
#c# #asp.net #просмотр сетки
Вопрос:
protected void Upload(object sender, EventArgs e)
{
//Extract Image File Name.
string fileName = Path.GetFileName(FileUpload1.PostedFile.FileName);
//Set the Image File Path.
string filePath = "~/Uploads/" fileName;
//Save the Image File in Folder.
FileUpload1.PostedFile.SaveAs(Server.MapPath(filePath));
string mycon = "server =localhost; Uid=root; password = ; persistsecurityinfo = True; database =ovs; SslMode = none";
MySqlConnection con1 = new MySqlConnection(mycon);
// string sql = "INSERT INTO candidate VALUES(@Name, @Path)";
MySqlCommand cmd = null;
cmd = new MySqlCommand("INSERT INTO candidate(candidateImage,path where studentID ='" Session["UserName"] "') VALUES (@Name,@Path)", con1);
cmd.Parameters.AddWithValue("@Name", fileName);
cmd.Parameters.AddWithValue("@Path", filePath);
con1.Open();
cmd.ExecuteNonQuery();
con1.Close();
}
Когда пользователи нажимают кнопку загрузки, изображение и путь будут сохранены в базе данных, принадлежащей конкретным пользователям. Например, пользователи с идентификатором R1001 входят в свою учетную запись, и когда они нажимают кнопку загрузки, изображение и путь будут сохранены под R1001 в базе данных. Я показываю сообщение об ошибке, в котором говорится о наличии синтаксической ошибки, но я не могу ее найти
Комментарии:
1. в чем заключается ваше сообщение об ошибке?
2. В нем говорится, что в cmd = new MySqlCommand есть синтаксическая ошибка («ВСТАВИТЬ В ЗНАЧЕНИЯ кандидата (candidateImage,path, где StudentID ='» Session[«UserName»] «‘) (@Name,@Path)», con1);
3. почему вы в (candidateImage, путь, где StudentID ='» Session[«UserName»] «‘) где во время вставки?
4. Путь к имени идентификатора студента R1001 Текущая база данных будет выглядеть следующим образом, я намерен, когда пользователи нажмут кнопку загрузки, имя и путь будут добавлены. Путь к имени идентификатора студента R1001 image1 uploads/ images1
5. Поделитесь схемой таблицы. Я имею в виду поля таблиц, чтобы знать, какие поля требуются
Ответ №1:
Вам не нужно Where
, когда вы хотите вставить данные в свою таблицу. Я удалил where
ваш command
и использовал параметр для SessionID.
protected void Upload(object sender, EventArgs e)
{
//Extract Image File Name.
string fileName = Path.GetFileName(FileUpload1.PostedFile.FileName);
//Set the Image File Path.
string filePath = "~/Uploads/" fileName;
//Save the Image File in Folder.
FileUpload1.PostedFile.SaveAs(Server.MapPath(filePath));
string mycon = "server =localhost; Uid=root; password = ; persistsecurityinfo = True; database =ovs; SslMode = none";
MySqlConnection con1 = new MySqlConnection(mycon);
// string sql = "INSERT INTO candidate VALUES(@Name, @Path)";
SqlCommand cmd = null;
string command = "update candidate set candidateImage=@Name ,path = @Path where StudentID=@studnetId";
cmd = new MySqlCommand(command, con1);
cmd.Parameters.AddWithValue("@Name", fileName);
cmd.Parameters.AddWithValue("@Path", filePath);
cmd.Parameters.AddWithValue("@studnetId", Session["UserName"]??""); // if student id is accept number in database, you must convert it to int
con1.Open();
cmd.ExecuteNonQuery();
con1.Close();
}
Комментарии:
1. Вы неправильно
@studentId
написали и вставили@Name
дважды вместо@Path
though .2. В базе данных есть 3 столбца: StudentID, имя и путь. Идентификатор студента R1001 уже существует в базе данных, имя и путь — нет. Когда пользователь нажимает кнопку загрузки, он хотел бы сохранить имя и путь под идентификатором StudentID R1001
3. @KekwYc Либо вы обновляете строку и используете WHERE , либо добавляете новую и не добавляете WHERE . Но, как сказал осман Рахими, не существует такой вещи, как вставка с предложением WHERE .
4. @KekwYc Так что вам нужно и обновите. всегда ли есть запись для пользователя?
5. Я меняю команду на update : cmd = new MySqlCommand(«ОБНОВИТЬ НАБОР значений кандидата (candidateImage,путь, где StudentID ='» Session[«UserName»] «‘) (@Name,@Path)», con1);, но он по-прежнему показывает сообщение об ошибке с указанием синтаксической ошибки