2012-11-19 3 views
0

Я только начал делать пример приложения, которое вызывает только некоторые таблицы в моей базе данных sqlite, и мне удалось решить другие проблемы, которые произошли со мной, кроме этого! хотя я искал предлагаемые решения для проблемы подключения и разрешения, и все кажется недействительным со мной для разрешения. Я добавил всех пользователей с полным контролем и все той же ошибкой. ниже мой код я пытаюсь выполнить:SQLIte не удалось открыть базу данных

// calling function 
void getrecords2() 
    { 
     MySqlLite.DataClass ss = new MySqlLite.DataClass(); 
     DataTable dt = ss.selectQuery("select * from english_words"); 
    } 

//the SQLite class that execute the code 
using System.Data; 
using System.Data.SQLite; 

namespace MySqlLite 
{ 
    class DataClass 
    { 
     private SQLiteConnection sqlite; 

     public DataClass() 
     {    
      //This part killed me in the beginning. I was specifying "DataSource" 
      //instead of "Data Source" 
      sqlite = new SQLiteConnection(@"Data Source=C:\testwork\db\MrPick.sqlite3.db;Version=3;FailIfMissing=True"); 

     } 

     public DataTable selectQuery(string query) 
     { 
      SQLiteDataAdapter ad; 
      DataTable dt = new DataTable(); 

      try 
      { 
       SQLiteCommand cmd; 
       sqlite.Open(); //Initiate connection to the db 
       cmd = sqlite.CreateCommand(); 
       cmd.CommandText = query; //set the passed query 
       ad = new SQLiteDataAdapter(cmd); 
       ad.Fill(dt); //fill the datasource 

       cmd.Dispose(); 
       sqlite.Dispose(); 

      } 
      catch (SQLiteException ex) 
      { 
       //Add your exception code here. 
      } 
      sqlite.Close(); 
      return dt; 
     } 
    } 
} 

Примечание: я использовал следующий assemply: ADO.NET SQLite Поставщиком данных версии 1.0.82.0 3 сентября 2012 Использование SQLite 3.7.14 Первоначально написанный Роберт Симпсон Выпущено в общественное достояние, используйте на свой страх и риск! Официальный сайт провайдера: http://system.data.sqlite.org/

Я действительно ценю вашу помощь в этом.

+3

Хорошо, а каково исключение, и где вы его получите? – cdhowie

+0

Вы уверены, что это версия вашего db 3? –

+0

Исключение: System.Data.SQLite.SQLiteException (0x80004005): Не удается открыть файл базы данных – Rama

ответ

3

За ваш комментарий вы получаете сообщение «Не удалось открыть файл базы данных», потому что вы указываете код в файле, который не существует.

Ошибка «Таблица не найдена» означает, что она найдена в базе данных, но не в таблице, которую вы искали. С другой стороны, «Невозможно открыть файл базы данных» означает, что он даже не мог найти базу данных и даже не стал искать таблицу. Вы гораздо ближе к нему, работая правильно, когда вы получаете «Таблица не найдена».

Вы должны изменить путь назад, чтобы соответствовать файлу на диске, а затем использовать инструмент, например Firefox SQLite Manager, чтобы подтвердить, что таблица english_words существует в вашей базе данных.

Если это не так, вы должны создать его с помощью этого инструмента, и если да, то вы должны поставить здесь еще один вопрос о ошибке «Таблица не найдена».

Надеюсь, это поможет.

+0

В SQLite существует поведение, которое, если база данных, указанная в строке соединения, не существует, создаст новую, поэтому всегда будет отображаться таблица не найдена ошибка "в неправильной строке подключения. – Rama

+0

@Nasser - Да, но у вас 'FailIfMissing' установлено значение true, поэтому он не создаст его, если он его не найдет. – Bobson

+2

Я столкнулся с той же проблемой, но для меня проблема заключалась в том, что общая длина connectionString составляла более 128 символов, включая «Datasource = C:/ /.db». Уменьшите длину, и она должна работать. –

3

Когда я столкнулся с этой ошибкой, мне пришлось установить parseViaFramework в конструкторе SQLiteConnection на true.

SQLiteConnection connection = new SQLiteConnection(connectionString, true); 
connection.Open(); 
+0

https://stackoverflow.com/questions/10875612/sqlite-c-unable-to-open-the-database-file – kikea

Смежные вопросы