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

你只有一个选择,忘记其他一切。像这样使用参数化查询

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 Engine 里面的参数。
这将处理特殊字符,如引号。
但是使用参数化查询可以获得另一个好处。避免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 回答