我想将格式化文本保存到表格中,然后使用这个输出HTML的丰富文本编辑器。当我运行它时,我得到:
解析查询时出错。 [令牌行号= 1,令牌 line offset = 31,Token in error =< ]
我的命令如下:
new SqlCeCommand("UPDATE Bio SET text = " + form["textbox"].Replace("\"", """) + " WHERE id = " + ViewBag.Id, conn)
但我想它不喜欢<&gt ;,我需要更换什么?与<>?一样使用引号任何逃避这一切的函数?
答案 0 :(得分:2)
有关将要插入的文本作为参数传递的示例,请参见此处: http://msdn.microsoft.com/en-us/library/system.data.sqlserverce.sqlcecommand.parameters(v=vs.100).aspx
根据MattD的建议 - 这是示例代码。请注意,我实际上没有运行此操作,如果存在语法问题,请留下备注,我会修复它。无论如何,这应该可以让你获得99%的支持。
另请注意:以这种方式使用参数总是一个好主意,而不是将文字文本附加到sql查询中。这消除了SQL注入错误或黑客攻击的可能性,有人可能会恶意输入完成SQL的文本,然后添加自己的SQL也将被执行。
SqlCeCommand command = new SqlCeCommand("UPDATE Bio SET text = @htmlText WHERE id = @id", conn);
SqlCeParameter param;
// NOTE:
// For optimal performance, make sure you always set the parameter
// type and the maximum size - this is especially important for non-fixed
// types such as NVARCHAR or NTEXT; In case of named parameters,
// SqlCeParameter instances do not need to be added to the collection
// in the order specified in the query; If however you use ? as parameter
// specifiers, then you do need to add the parameters in the correct order
//
param = new SqlCeParameter("@id", SqlDbType.Int);
command.Parameters.Add(param);
param = new SqlCeParameter("@htmlText", SqlDbType.NVarChar, -1);
command.Prepare();
//Set the values and the length of the string parameter
command.Parameters[0].Value = ViewBag.Id;
command.Parameters[1].Value = form["textbox"];
command.Parameters[1].Size = form["textbox"].Length;
// Execute the SQL statement
//
command.ExecuteNonQuery();