Предполагая использование c # -sqlite,
когда вы создаете соединение, используя соответствующий API, вы фактически передаете имя файла для использования в качестве параметра. Если файл не существует, он создается (по умолчанию). например,
new SQLiteDatabase("c:\\foo.db")
Конечно, потому что вам нужно избежать обратной косой черты (это потому, что это строка). Предварительное создание файла не работает, потому что результирующий файл не является базой данных sqlite, и поэтому его нельзя использовать (поэтому я предполагаю, что в этом случае вы получаете ошибку).