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

'部分の前にa がない/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 に答える