C#OLEDB保护查询中的对手

我试图find一种方法来保护我的查询string中的apostrophie。 我有一个包含apostrophie的string格式的值,当我试图插入时,它会抛出一个错误

例如:

Insert into ["excelApp.worksheetsList.ElementAt(0).Name "$"] " + ([col1], [col2]) values values" + " ('" + val1 + "', '" + val2 + "');") 

这是一个例子。 这里val1包含“hereIsMy'value”。

谢谢你帮助我

您应该使用参数化查询,而且不必担心查询中的单引号

 using(OleDbConnection cn = new OleDbConnection(GetConnectionString())) { cn.Open(); string cmdText = "Insert into [" + excelApp.worksheetsList.ElementAt(0).Name + "$] " + "([col1], [col2]) values (?, ?)"; OleDbCommand cmd = new OleDbCommand(cmdText, cn) cmd.Parameters.AddWithValue("@p1", val1); cmd.Parameters.AddWithValue("@p2", val2); cmd.ExecuteNonQuery(); } 

在这个例子中,你的命令文本由一个带有参数值占位符的单个string组成。 然后命令对象被声明为具有该string,并在参数集合处添加两个参数。 它们是根据作为值传递的variablestypes创build的。 因此,如果val1和val2是string,并且存在单引号(撇号),则会自动格式化插入/删除/更新或select操作

使用参数化的命令 ,你不必担心这样的事情。 你不必担心撇号和其他一些问题。