Apanhando com SQLite + C#

6 respostas
M
Caros, estou desenvolvendo uma aplicação para estudo que contém simplesmente um Form com um DataGridView e um button. Eu tenho também um pequeno banco em SQLite com uma uma só tabela. Quando eu clico no botão, a ação faz uma consulta nessa tabela e exibe (ou pelo menos era para exibir) o resultado no DataGridView. Porém, o seguinte erro é disparado: "File opened that is not a database file file is encrypted or is not a database". Eis meu pequeno código fonte:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Data.SQLite;

namespace Tutorial
{
    public partial class AcessoSQLite : Form
    {
        public AcessoSQLite()
        {
            InitializeComponent();
        }

        private void BtnCarregarDados_Click(object sender, EventArgs e)
        {
            DataTable dt = new DataTable();
            String insSQL = "select * from Alunos";
            String strConn = @"Data Source=C:\dados\MacorattiSQLite.db";
            SQLiteConnection conn = new SQLiteConnection(strConn);
            conn.Open(); // O Erro acontece aqui
            SQLiteDataAdapter da = new SQLiteDataAdapter(insSQL, conn);
            da.Fill(dt);
            gdvAlunos.DataSource = dt.DefaultView;
        }
    }
}
Eu coloquei um comentário no código indicando a linha do erro. O que pode ser? Desde já agradeço.

6 Respostas

W

O banco tem senha?? porque vc nao esta especificando na string de conexao.

Tipo:

String strConn = @“Data Source=C:\dados\MacorattiSQLite.db;Password=sua_senha”;

M

Cara fiz isso mas continuou dando o mesmo erro. O que será? Desde ontem tento fazer isso mas dá erro e os tutoriais que eu acho na net sobre sqlite com c# cada um tem mais bug que o outro.
E o banco não tem senha, eu que criei o banco.

W

Vc ta com o banco aberto em outro lugar? Por exemplo no programa que vc usou pra criar o banco ?
Se estiver aberto, fecha esse aplicativo e tenta rodar o seu programa de novo.

M

Cara sinto em informar que ainda dá o mesmo erro. Agradeço a atenção.

W

Dei uma pesquisada na net e achei que esse erro tb pode ser porque causa de incompatibilidade entre o ADO.NET data provider que vc ta usando e o banco.
Vc pode tentar dar uma verificada nisso tb.

outra coisa,

colocar um try catch quando vc abre a conexao e imprime a exception. E posta ai, talvez ajude achar o problema.

//Daniel

M

Cara resolvi, o problema era de compatibilidade mesmo. Como eu tinha a aversão mais recente da DLL do sqlite, eu criei um banco manualmente na minha própria aplicação. Pronto, resolvido. Obrigado pela ajuda.

Criado 10 de dezembro de 2010
Ultima resposta 10 de dez. de 2010
Respostas 6
Participantes 2