2011-12-14 13 views
0

私はc#でWebサービスを作成しました。管理者がエスケープシーケンス文字でファイル名を編集するとエラーが発生します。私は、オーディオファイルname.Butにファイル名を更新すると、エラーコードが表示されます。私の現在のコードはありますか? ex:私のようなファイル名が必要です:stafford's.mp3オーディオファイル名がエスケープシーケンス文字を受け取りません

    protected void dbUpdate(int Id, string newfileName,string newfilePath,string newfileExt,string newfileType) 
{ 
    string filep; 
    if (newfileType == "Image") 
    { 
     filep = newfilePath + newfileType + "/" + newfileName.Replace(" ", string.Empty) + newfileExt; 
    } 
    else 
    { 

     filep = newfilePath + newfileType + "/" + newfileName.Replace(" ", string.Empty) + newfileExt; 
    } 

    String getSQL1 = "UPDATE tbluploadedfilesdetail set FileName='" + newfileName + "' FilePath= '" + filep + "' where ID=" + Id + ";"; 
    MySqlConnection objMyCon1 = new MySqlConnection(connection); 
    objMyCon1.Open(); 
    MySqlCommand cmd2 = new MySqlCommand(getSQL1, objMyCon1); 
    cmd2.ExecuteNonQuery(); 
    objMyCon1.Close(); 
+0

フィールドの文字をエスケープしようとしましたか? (例: "になる") –

答えて

1

一重引用符を二重引用符に置き換えると、問題が解決されます。

... set FileName='" + newfileName.Replace("'", "''") + "' ... 

SQLに値を直接代入するのではなく、SqlParametersを使用する必要があります。したがって、SqlParametersを参照してください。

+0

私はそれを試しましたが、それは動作しません:次のエラーが表示されます。あなたのMySQLサーバのバージョンに対応するマニュアルをチェックして、正しい構文が近くの 'FilePath =' http://www.creativeartist.com/Audio/Alone''s.mp3 'のID = 136'を1行目で使用するようにしてください – Developer

関連する問題