Невозможно получить записи из базы данных SQLite для приложения смарт-устройства - PullRequest
1 голос
/ 01 июня 2011

Я использую SQLite.NET с C # [visual studio 2008] и добавил «System.Data.SQLite.dll» в качестве ссылки.Следующий код работает с приложением Windows для извлечения данных из файла моей базы данных в сетку данных.

    private void SetConnection()
    {
        sql_con = new SQLiteConnection("Data Source=emp.db;Version=3;");
    }

    public DataTable LoadData()
    {
        SetConnection();
        sql_con.Open();
        sql_cmd = sql_con.CreateCommand();
        string CommandText = "select * from employeedetails";
        transaction=sql_con.BeginTransaction();
        DA = new SQLiteDataAdapter(CommandText, sql_con);
        DS.Reset();
        DA.Fill(DS);
        DT = DS.Tables[0];
        transaction.Commit();
        sql_con.Close();
        return DT;
    }

Вызов:

    private void Form1_Load(object sender, EventArgs e)
    {
        EmpTable obj = new EmpTable();     
        this.dataGridView1.DataSource = obj.LoadData();
    }

Тот же код не работаетс C # «Приложение Smart Device».Это показывает исключение: нет такой таблицы 'employeedetails'.

Для приложения для смарт-устройств я добавил System.Data.SQLite.dll из папки "SQLite / CompactFramework".

Пожалуйста, помогите мнеЧтобы решить эту проблему.

Заранее спасибо.

Ответы [ 3 ]

3 голосов
/ 02 июня 2011

Я не уверен, что это является причиной вашей проблемы, но у нас были проблемы в прошлом с мобильными устройствами и sqlite, где это решило:

Для приложения, использующего компактный каркас, вам необходимо включить SQLite.Interop.xxx.DLL в ваш проект (в дополнение к обычному System.Data.SQLite.DLL). Убедитесь, что вы установили файл на копировать, если новее или копировать всегда .

Имейте в виду, что вы не можете установить ссылку на dll взаимодействия. Вы должны включить его в проект, добавив его в виде файла.

Для получения дополнительной информации проверьте этот веб-сайт в разделе Распространение SQLite Engine и сборки ADO.NET .

2 голосов
/ 03 июня 2011

Спасибо, ребята,

Я решил проблему.Как сказал 'siyw', проблема заключалась в том, что приложение не нашло "файл базы данных".

Для приложений Windows:

Файл db должен находиться в папке отладки, где создается файл .exe.Таким образом, нет необходимости указывать путь к файлу БД.

Для приложения Smart Device,

Файл БД будет создан в корневой папке устройства.,Если мы свяжем файл db средствами exe, он не найдет его и создаст новую базу данных в корневой папке.

Чтобы избежать этого, при создании CAB-файла мы должны создать собственную папку [ex.DBfolder] и поместите файл db в папку.Задайте путь в строке подключения как,

sql_con = new SQLiteConnection("Data Source=DBfolder/emp.db;Version=3;");

Теперь приложение найдено в БД.

1 голос
/ 02 июня 2011
sql_con = new SQLiteConnection("Data Source=emp.db;Version=3;");

Я думаю, вам нужно указать полный путь и убедиться, что он правильный. Если путь к несуществующему файлу, он создаст новый файл базы данных emp.db. Этот новый файл, очевидно, будет пустым и без каких-либо таблиц, поэтому он выдаст исключение no such table 'employeedetails', которое вы получите, если запросите его.

...