0

' 文字を含む可能性のある文字列を SQL テーブルに挿入したいと考えています。

そうするための私の最善の方法は何ですか? ' の前に \ を挿入する必要がありますか? ac# コードでの私のコマンドは次のとおりです。

SqlCommand myCommand = new SqlCommand(
    String.Format(
    "insert into ACTIVE.dbo.Workspaces_WsToRefile values({0},'{1}',getdate())", 
        folderId, 
        NewWorkspaceName), 
     myConnection);

ここで、NewWorkspaceName には ' 文字が含まれている可能性があるため、挿入によって現時点で例外が発生します。

高度なありがとう、ハダス。

4

4 に答える 4

6

SqlParameter を使用する必要があります。http://msdn.microsoft.com/en-us/library/yy6y35y8.aspx

    string query = "insert into ACTIVE.dbo.Workspaces_WsToRefile values(@folderID, @newWorkSpace, @createDate)";

using(SqlCommand cmd = new SqlCommand(query, SqlConnection))
{

    SqlParameter param = new SqlParameter("@folderID", folderId);
    param.SqlDbType = SqlDbType.Int;
    cmd.Parameters.Add(param);
    .....
}
于 2012-08-08T15:18:07.987 に答える
2

選択肢は 1 つだけです。他はすべて忘れてください。このようなパラメーター化されたクエリを使用します

SqlCommand myCommand = new SqlCommand("insert into ACTIVE.dbo.Workspaces_WsToRefile" + 
                                      " values(@id, @space, getDate()", myConnection);  
myCommand.Parameters.AddWithValue("@id", folderId);
myCommand.Parameters.AddWithValue("@space", NewWorkspaceName);
myCommand.ExecuteNonQuery();

folderIDと NewWorkspaceName は、パラメーター内の SQL エンジンに渡されます。
これにより、引用符などの特殊文字が処理されます。
しかし、パラメーター化されたクエリを使用すると、別の利点が得られます。Sql インジェクション攻撃を避ける

于 2012-08-08T15:22:35.153 に答える
1
NewWorkspaceName= NewWorkspaceName.Replace("\'","\'\'");

'' は SQL の ' です

于 2012-08-08T15:20:34.097 に答える
0

これを試すことができます:

string stringToDatabase=Server.HtmlEncode("կҤїАͻBsdҤїА");

これにより、「stringToDatabase」がデータベースに保存されます。その後、取得しながら

string OriginalText=Server.HtmlDecode(stringFromDatabase);
于 2014-05-11T16:59:37.250 に答える