>> Нужно устанавливать связь с базой данных при открытии программы. Как я понял, за это отвечает первая строка (ObjConnection = new SQLiteConnection). Куда это лучше перенести?
Вообще обычно для таких целей создаётся уровень доступа к данным, отдельный от уровня представления, который инкапсулирует в себе всю логику по управлению запросами к бд (гуглить «n-tier application»). Держать постоянно открытым одно подключение — не самый лучший вариант. Но к сожалению, не могу сказать, как обстоят дела с кэшированием подключений в этом sqlite-провайдере, тут уже надо тестировать.
>> Где и как лучше хранить это соединение с базой, чтобы я всегда смог получить к нему доступ (что-то типа глобальной переменной)?
Для десктопных приложений — стандартный конфигурационный файл app.config (задать значения для строк подключений можно через Project Settings -> Settings, у записи указываете scope = Application, тогда её значение доступно через %namespace%.Properties.Settings)
>> Как мне сделать запрос, который вытащит одну строку, чтобы в дальнейшем с ней работать? Нужно что-то типа ObjConnection.query(«SELECT login FROM users WHERE id = 1»)
ExecuteReader()