如果字符串company
包含撇号,则会导致错误。
示例:公司名称,如“William's store”。
如何构建一个SQLite查询,使用SQLite-Net api来处理这类问题。
I am using SQLite-Net api and I tried both and they did not work. In SQLite-Net api, I think there is no Parameters. What other alternative that I can use? private async void GetCustomerVATGroup(string Company) { 1) string strChkName = Company.Replace("'", "''"); // or Company.Replace("'","\'"); var allUsers = await db.QueryAsync<Customer>( "Select * From Customer Where CompanyName ='" + strChkName + "'"); 2) var allUsers = await db.QueryAsync<Customer>( "Select * From Customer Where CompanyName =''" + Company + "''"); }
答案 0 :(得分:5)
通过将字符串括在单引号中形成字符串常量 (')。字符串中的单引号可以通过放置两个来编码 连续单引号 - 如Pascal。 C风格逃脱使用 不支持反斜杠字符,因为它们不是标准字符 SQL。 BLOB文字是包含十六进制数据和字符串文字的字符串文字 前面有一个“x”或“X”字符。 ......字面值可以 也是令牌“NULL”。
因此,您可以使用字符串替换来转义它,但查询数据库的最佳方法是避免字符串连接以避免Sql injection。
最佳做法是使用Parameterized Querys
在sqllite-net中,它们作为参数传递,方法为:
var allUsers = await db.QueryAsync<Customer>("Select * From Customer Where CompanyName ='?'", Company);