Using the KeyValueStore cls and when storing a string value with putsimple, would appear that the value when it is "+353..." or "087...." both the + and the 0 are not stored.
This is kind of important as the string is a phone number and need the preceding + or 0.
Looks like SQLite is treating those Strings as numbers when it stores and retrieves them. Using PutObject and GetObject seem to work OK but are inefficient. It might be better to keep using PutSimple and GetSimple and prefix the values with a non-numeric character and remove it when reading so SQLite treats the values as Strings.
According to the documentation for SQLite, it should store a numeric value as a string as long as the column is TEXT.
A column with TEXT affinity stores all data using storage classes NULL, TEXT or BLOB. If numerical data is inserted into a column with TEXT affinity it is converted into text form before being stored.
Another workaround, if you planned to use KeyValueStore only to work with strings you can change de CreateTable Sub by replacing "value NONE" with "value TEXT".
I suggest make your own KeyValueStore Class removing the methods that you don't use.
Private Sub CreateTable
sql1.ExecNonQuery("CREATE TABLE IF NOT EXISTS main(key TEXT PRIMARY KEY, value TEXT)")
End Sub