Расположение файла SQLite в проекте Visual Studio - PullRequest
0 голосов
/ 09 апреля 2011

У меня есть небольшое приложение, над которым я работаю, и часть целей проекта состоит в том, чтобы просто лучше познакомиться с SQLite.Основной точкой входа является консольное приложение (подпроект с именем Console), но код доступа к данным находится в другом подпроекте (с именем Infrastructure).Я просто создал в Инфраструктуре папку с именем Data, удалил туда файл .sqlite и добавил несколько фиктивных таблиц и данных.

Проект выглядит следующим образом:

  • Решение
    • Консоль (проект)
    • Домен (проект)
    • Инфраструктура (проект)
      • Данные (папка)

Моя исходная строка подключения выглядела так:

var cnx = new SQLiteConnection("Data Source=testing.sqlite; FailIfMissing=True");

Впервые я увидел, что 0KB testing.sqlite удалялся из каталога Debug.Простой запрос подсчета не удался, потому что таблица, на которую я ссылался, явно не существовала в пустом файле.Немного поигравшись, я обнаружил, что если я установил свойства файла .sqlite на «Содержимое и всегда копировать» и изменил строку подключения, я мог бы подключиться как положено.

var cnx = new SQLiteConnection("Data Source=Data\\testing.sqlite; FailIfMissing=True");

Я пропустилчто-то здесь, или это действительно так, как мне следует включить файл в мой проект?

Ответы [ 2 ]

1 голос
/ 09 апреля 2011

Я думаю, что лучший способ пойти сюда - это, вероятно, переместить файл за пределы проекта и просто использовать параметр в App.config.

В App.config:

<connectionStrings>
  <add name="mydb" connectionString="Data Source=D:\\Data\\testing.sqlite; FailIfMissing=True"/>
</connectionStrings>

В коде:

private string _connectionString = ConfigurationManager.ConnectionStrings["mydb"].ConnectionString;

Если мне нужен физический файл в моем проекте, я могу продолжать делать то, что я отметил выше.

0 голосов
/ 10 апреля 2011

Если база данных SQLite не нуждается в большом количестве данных перед распространением, вы можете просто создать ее во время выполнения.Если вы хотите, чтобы он находился в том же месте, что и ваш исполняемый файл, попробуйте создать его (код VB.Net)

 Dim SQLconnect As New SQLite.SQLiteConnection()
 SQLconnect.ConnectionString = "Data Source=" & Application.StartupPath & "\database.db;"
 SQLconnect.Open()
 SQLconnect.Close()

. Это создаст пустой файл базы данных, и если вы хотите создать таблицы и/ или загрузить некоторые данные, вы можете сделать что-то вроде этого (после проверки, конечно, существуют ли таблицы):

    If tblSettingsExist = False Then
        SQLconnect.Open()
        SQLcommand = SQLconnect.CreateCommand
        SQLcommand.CommandText = "CREATE TABLE Settings(setting TEXT PRIMARY KEY, value TEXT);"
        SQLcommand.ExecuteNonQuery()
        SQLcommand.Dispose()
        SQLconnect.Close()

        'add records for all default settings
        SQLite_InsertRecord("Settings", "setting, value", "'someSetting1', '-1'")
        SQLite_InsertRecord("Settings", "setting, value", "'someSetting2', '0'")
        SQLite_InsertRecord("Settings", "setting, value", "'someSetting3', '1'")
    End If

Просто для полноты, вот подпрограмма, которую я использую для вставки данных:

Public Sub SQLite_InsertRecord(ByVal table As String, ByVal fields As String, ByVal values As String)
    Dim SQLcommand As SQLiteCommand
    SQLconnect.Open()
    SQLcommand = SQLconnect.CreateCommand
    SQLcommand.CommandText = "INSERT INTO " & table & " (" & fields & ") VALUES (" & values & ")"
    Try
        SQLcommand.ExecuteNonQuery()
    Catch ex As Exception
        MsgBox(ex.Message, MsgBoxStyle.Critical, "Database Insertion Error")
    Finally
        SQLcommand.Dispose()
        SQLconnect.Close()
    End Try
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...