2
cmSQL = New SqlCommand("UPDATE AdBanner SET AdBannerTitle='" & txTitle.Text & "',AdBannerFileUrl=/Images/'" & fileUpload.FileName & "',AdBannerTargerUrl='" & txTargetUrl.Text & "',AdBannerIsActive='" & chkBox.Checked & "' WHERE AdBannerID='" & lblBannerId.Text & "'", cnSQL)

错误:“/”附近的语法不正确。

更新记录时出现该错误

4

4 回答 4

4

您必须在前面加上引号 ( ') /Images/。将您的声明更改为:

cmSQL = New SqlCommand("UPDATE AdBanner SET AdBannerTitle='" & txTitle.Text _
        & "',AdBannerFileUrl='/Images/" & fileUpload.FileName _
        & "',AdBannerTargerUrl='" & txTargetUrl.Text _
        & "',AdBannerIsActive='" & chkBox.Checked _
        & "' WHERE AdBannerID='" & lblBannerId.Text & "'", cnSQL)

当你完成这些后,我建议你立即开始学习SQL 注入。这是一个简单但危险的安全隐患。

于 2012-12-19T12:37:38.793 回答
2

直接的问题是您没有为AdBannerFileUrl;创建有效的文字。然而!你此刻的做法是致命的。请参阅“SQL 注入”。你应该参数化它,然后它变成:

cmSql = new SqlCommand("UPDATE AdBanner SET AdBannerTitle=@Title,AdBannerFileUrl=@FileUrl,AdBannerTargerUrl=@TargetUrl,AdBannerIsActive=@IsActive WHERE AdBannerID=@ID", cnSQL)

然而!然后,您必须为每个参数添加参数:

cmSql.Parameters.AddWithValue("@Title", txtTitle.Text);
cmSql.Parameters.AddWithValue("@FileUrl", "/Images/" + fileUpload.FileName);
cmSql.Parameters.AddWithValue("@TargetUrl", txTargetUrl.Text);
cmSql.Parameters.AddWithValue("@IsActive", chkBox.Checked);
cmSql.Parameters.AddWithValue("@ID", lblBannerId.Text);
于 2012-12-19T12:39:29.623 回答
1

您缺少'前面的/Images/部分,因此 SQL Server 获取的 SQL 格式不正确。

但是,在当今时代,在服务器上执行基于连接的 SQL 是,坦率地说,是愚蠢的,尤其是在使用未经验证的用户提供的值(如 txTitle.Text)时

更好的方法是:

cmSQL = New SqlCommand("UPDATE AdBanner SET AdBannerTitle=@AdBannerTitle" _
    & ", AdBannerFileUrl=@AdBannerFileUrl" _
    & ", AdBannerTargerUrl=@AdBannerTargerUrl" _
    & ", AdBannerIsActive=@AdBannerIsActive" _
    & " WHERE AdBannerID=@AdBannerID", cnSQL)
cmSQL.CommandType = CommandType.Text;

cmSQL.Parameters.AddWithValue("@AdBannerTitle", txTitle.Text)
cmSQL.Parameters.AddWithValue("@AdBannerFileUrl", "/Images/" & fileUpload.FileName)
cmSQL.Parameters.AddWithValue("@AdBannerTargerUrl", txTargetUrl.Text)
cmSQL.Parameters.AddWithValue("@AdBannerIsActive", chkBox.Checked)
cmSQL.Parameters.AddWithValue("@AdBannerID", lblBannerId.Text)
于 2012-12-19T12:46:56.850 回答
0

你的单引号放错了位置。

你的代码必须是

    cmSQL = New SqlCommand("UPDATE AdBanner SET AdBannerTitle='" & txTitle.Text & "',AdBannerFileUrl='/Images/" & fileUpload.FileName & "',AdBannerTargerUrl='" & txTargetUrl.Text & "',AdBannerIsActive='" & chkBox.Checked & "' WHERE AdBannerID='" & lblBannerId.Text & "'", cnSQL)
于 2012-12-19T13:49:27.483 回答