无法删除撇号

时间:2014-01-23 18:01:04

标签: c# asp.net

如果没有撇号的任何值,这段代码可以正常工作。但是,如果ddList.SelectedValue是,例如,在女性的一天,它会在'附近显示"不正确的语法。字符串后的未闭合引号'''。" 我试过了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();
    }
}

2 个答案:

答案 0 :(得分:4)

SqlCommand command = new SqlCommand("select ID from Album where AlbumName = @name", conn);
command.Parameters.Add(new SqlParameter("@name", albumName));
.
.
.

此外,您应该在using() {}构造中包装连接,命令和读取器对象,以便及时处理资源。

只要将动态内容放入SQL字符串中,就可以使用这样的参数来避免这样的错误,以及SQL注入攻击和其他漏洞。

此外,您可以快速替换执行多个查询的参数,而无需重建字符串。

答案 1 :(得分:1)

.Replace("'",@"\'") 

这将逃脱您的单引号/撇号