我想在sql表中插入一个可能包含'character的字符串。
我最好的方法是什么? 我应该在'之前插入\吗? 这是我在c#代码中的命令:
SqlCommand myCommand = new SqlCommand(
String.Format(
"insert into ACTIVE.dbo.Workspaces_WsToRefile values({0},'{1}',getdate())",
folderId,
NewWorkspaceName),
myConnection);
其中NewWorkspaceName可能包含'character,因此插入将导致异常。
感谢先进的哈达斯。
答案 0 :(得分: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);
.....
}
答案 1 :(得分: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 Injection Attacks
答案 2 :(得分:1)
NewWorkspaceName= NewWorkspaceName.Replace("\'","\'\'");
''是sql中的'
答案 3 :(得分:0)
你可以试试这个:
string stringToDatabase=Server.HtmlEncode("կҤїАͻBsdҤїА");
这会在数据库中保存“string To Database” 。然后在检索时
string OriginalText=Server.HtmlDecode(stringFromDatabase);