在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);