如果沒有撇號的任何值,這段代碼就能正常工作。但是,如果ddList.SelectedValue是比如婦女節,它顯示「不正確的語法附近's'。在字符串''後面的未引用的引號」。 我試過albumName.Replace,但目前爲止沒有運氣。無法刪除撇號
protected void btnUpload_Click(object sender, EventArgs e)
{
string albumName = ddList.SelectedValue.ToString();
albumName.Replace("'", "''");
conn.Open();
SqlCommand command = new SqlCommand("select ID from Album where AlbumName = '" + albumName + "'", conn);
SqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
AlbmID = Int32.Parse((reader["ID"].ToString()));
}
reader.Close();
if (fileuploadimages.HasFile == false)
{ ScriptManager.RegisterStartupScript(Page, Page.GetType(), "key", "<script>alert('No File Uploaded.')</script>", false); }
else
{
//Get Filename from fileupload control
string filename = Path.GetFileName(fileuploadimages.PostedFile.FileName);
//Save images into SlideImages folder
fileuploadimages.SaveAs(Server.MapPath("Pictures/" + filename));
//Open the database connection
//Query to insert images name and Description into database
SqlCommand cmd = new SqlCommand("Insert into Images(ImagePath,Album_ID,ImageDesc) values(@ImagePath,@Album_ID,@ImageDesc)", conn);
//Passing parameters to query
cmd.Parameters.AddWithValue("@ImagePath", filename);
cmd.Parameters.AddWithValue("@Album_ID", AlbmID);
cmd.Parameters.AddWithValue("@ImageDesc", txtDescription.Text);
cmd.ExecuteNonQuery();
//Close dbconnection
conn.Close();
txtDescription.Text = "";
BindDataList();
}
}
您有SQL注入漏洞。你需要使用參數。 – SLaks
我知道。這是這個問題的原因嗎? – user3229034
它看起來像你已經知道如何使用參數(你的第二個查詢)。你爲什麼不(你的第一個問題)?這就是*完全*你將如何解決這個問題。目前你的第一個查詢是***執行用戶輸入作爲代碼***,這基本上允許任何用戶執行他們想要在你的數據庫中的任何代碼。 – David