2012-11-19 2 views
0

방금 ​​sqlite 데이터베이스의 일부 테이블을 호출하는 샘플 응용 프로그램을 시작했고,이 문제를 제외하고 나에게 일어난 다른 문제를 해결했습니다. 내가 connectionstring 및 권한 문제에 대한 제안 된 솔루션을 검색하고 모두 나와 함께 유효하지 않은 것 같지만 모든 사용자가 모든 권한과 여전히 같은 오류를 추가했습니다.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; 
     } 
    } 
} 

참고 : 아래 난 실행하려고 내 코드는 원래 작성 SQLite는 3.7.14 을 사용하여 2012 년 9월 3일 ADO.NET SQLite는 데이터 공급자 버전 1.0.82.0 : 나는 조립할 수 다음을 사용 에 의해 Robert Simpson 퍼블릭 도메인으로 배포, 사용에 따른 모든 책임은 사용자에게 있습니다! 공식 공급 업체 웹 사이트 : 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에서 connectionstring에 지정된 데이터베이스가 존재하지 않으면 새 데이터베이스가 만들어 지므로 항상"테이블 오류를 찾을 수 없습니다 "잘못된 연결 문자열에. – Rama

+0

@Nasser - 네,하지만'FailIfMissing'을 true로 설정 했으므로 찾지 못하면 생성하지 않습니다. – Bobson

+2

나는 같은 문제에 직면했지만 나에게 문제는 connectionString의 총 길이가 "Datasource = C :/ /.db"를 포함하여 128자를 넘었다는 것이다. 길이를 줄이면 효과가 있습니다. –

3

이 오류가 발생했을 때 trueSQLiteConnection 생성자의 parseViaFramework을 설정해야했습니다.

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

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

관련 문제