На самом деле, самый простой способ - заменить одинарные кавычки (') на две одинарные кавычки (' '). Ваш запрос станет:
insert into tname(foo) values ('one''s self');
Объяснение : SQLite рекомендует использовать одинарные кавычки (') вместо двойных кавычек (") в качестве разделителей строк, утверждая, что это то, что требуется в стандарте SQL (я не смог этого подтвердить). SQLite также отличается от всех других известных мне баз данных SQL тем, что он использует '' вместо \ ', опять же, утверждая стандарты SQL (опять же, я не смог подтвердить это утверждение).
Лично я склонен не соглашаться с этим утверждением, так как каждая другая база данных SQL, которую я знаю, использует способ C для экранирования символов, обратную косую черту. Даже если он был написан для использования '' где-то в стандарте SQL ISO, я считаю, что было бы лучше пересмотреть этот стандарт, чтобы использовать способ C, потому что на практике он все равно уже является стандартом.
Обратите внимание, что:
insert into tname(foo) values ('ones "self"');
является допустимым SQL-оператором по этой логике и не требует дополнительного экранирования.