Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法删除撇号_C#_Asp.net - Fatal编程技术网

C# 无法删除撇号

C# 无法删除撇号,c#,asp.net,C#,Asp.net,如果有任何不带撇号的值,这段代码将正常工作。但是,如果ddList.SelectedValue是,比如说,妇女节,它会显示“s附近的语法不正确”。字符串“”后面有未闭合的引号 我试过专辑名。替换,但到目前为止运气不好 protected void btnUpload_Click(object sender, EventArgs e) { string albumName = ddList.SelectedValue.ToString(); albumName.Replace("'

如果有任何不带撇号的值,这段代码将正常工作。但是,如果ddList.SelectedValue是,比如说,妇女节,它会显示“s附近的语法不正确”。字符串“”后面有未闭合的引号 我试过专辑名。替换,但到目前为止运气不好

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();
    }
}
protectedvoidbtnupload\u单击(对象发送方,事件参数e)
{
字符串albumName=ddList.SelectedValue.ToString();
相册名称。替换(“,”);
conn.Open();
SqlCommand=newSQLCommand(“从相册中选择ID,其中AlbumName='”+AlbumName+'”,conn);
SqlDataReader=command.ExecuteReader();
while(reader.Read())
{
AlbmID=Int32.Parse((reader[“ID”].ToString());
}
reader.Close();
if(fileuploadimages.HasFile==false)
{ScriptManager.RegisterStartupScript(Page,Page.GetType(),“key”,“alert('没有上载文件')”,false);}
其他的
{
//从fileupload控件获取文件名
string filename=Path.GetFileName(fileuploadimages.PostedFile.filename);
//将图像保存到SlideImage文件夹中
fileuploadimages.SaveAs(Server.MapPath(“Pictures/”+filename));
//打开数据库连接
//将图像名称和描述插入数据库的查询
SqlCommand cmd=new-SqlCommand(“插入到图像(ImagePath,相册ID,ImageDesc)值(@ImagePath,@Album\u ID,@ImageDesc)”,conn);
//向查询传递参数
cmd.Parameters.AddWithValue(“@ImagePath”,文件名);
cmd.Parameters.AddWithValue(“@Album_ID”,AlbmID);
cmd.Parameters.AddWithValue(“@ImageDesc”,txtDescription.Text);
cmd.ExecuteNonQuery();
//关闭数据库连接
康涅狄格州关闭();
txtDescription.Text=“”;
BindDataList();
}
}
此外,您应该使用(){}构造将连接、命令和读取器对象包装在
中,以便及时处理资源

在将动态内容放入SQL字符串时使用类似的参数,以避免此类错误、SQL注入攻击和其他漏洞

此外,您可以快速替换用于执行多个查询的参数,而无需重新生成字符串

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

这将避开您的单引号/撇号

您有一个SQL注入漏洞。你需要使用参数,我知道。这就是问题的原因吗?看起来您已经知道如何使用参数(第二个查询)。你为什么不(你的第一个问题)?这正是你要解决的问题。当前,您的第一个查询是以代码形式执行用户输入,这基本上允许任何用户在您的数据库中执行他们想要的任何代码。@David让我试试。@user3229034是的,这将解决这个问题,因为将参数值设置为您的
albumName
将确保字符串被转义。我真诚地希望这个代码不是在你的代码后面的一页。
.Replace("'",@"\'")