在sql db中插入一个包含特殊字符的字符串’

我想在sql表中插入一个可能包含’character的字符串。

我最好的方法是什么? 我应该在’之前插入\吗? 这是我在ac#代码中的命令:

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

其中NewWorkspaceName可能包含’字符,因此插入将导致exception。

感谢先进,哈达斯。

你应该使用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); ..... } 

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

 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注入攻击

 NewWorkspaceName= NewWorkspaceName.Replace("\'","\'\'"); 

”是一个’在sql中

你可以试试这个:

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

这样可以在数据库中保存“stringToDatabase”。 然后在撤退时

 string OriginalText=Server.HtmlDecode(stringFromDatabase);