Problema database SQLite in c#

di il
12 risposte

Problema database SQLite in c#

Salve a tutti, sarò molto breve e coinciso in modo da non annoiarvi. Da qualche settimana ho formattato il pc e installato visual studio 2017. Ho iniziato a lavorare su un programma per mio divertimento ed esperienza personale, al quale vorrei affiancare un database SQLite. Inizialmente quando ho solo messo le dll e impostato i riferimenti nel progetto, alla compilazione mi veniva dato un errore di versione dei file, risolto aggiungendo all'App.config questo pezzettino di codice: <requiredRuntime version="v4.0.20506" />.

Ora mi ritrovo a dover eseguire query mediante visual studio, ma alla compilazione viene generato un errore 'SQL logic error or missing database
no such table: Parola'. Ovviamente la tabella denominata "Parola" c'è e quindi non riesco a venirne fuori. Quello che è passato di mente a me è che l'errore potesse dipendere dalla riga di codice aggiunta nell'App.config, dato che in vs2015 tutto funzionava tranquillamente; però anche rimuovendola non cambia niente. Il codice, scritto in maniera grezza per dei test di funzionamento, è il seguente:

SQLiteConnection conn = new SQLiteConnection(ConfigurationManager.AppSettings.Get("dbConnectionString"));
            conn.Open();
            SQLiteCommand cmd = new SQLiteCommand("INSERT INTO Parola (par) VALUES (mestolo)", conn);
            cmd.ExecuteNonQuery();
Tendo a prescisare che nei test di verifica di connessione al database l'esito è positivo in quanto se io non richiamo l'apertura della connessione, lo stato risulta "Closed" al contrario invece, "Open", quindi la comunicazione applicativo-database suppongo ci sia.

Ringrazio chiunque si renda disponibile per un aiuto

12 Risposte

  • Re: Problema database SQLite in c#

    Il valore mestolo non dovrebbe avere gli apici singoli , 'mestolo' ?
  • Re: Problema database SQLite in c#

    gian82 ha scritto:


    Il valore mestolo non dovrebbe avere gli apici singoli , 'mestolo' ?
    Si vabbbe apparte quello il problema persiste a prescindere anche se gli passo un valore tramite text box. L'eccezione viene generata dall'executeNonQuery, se il problema fossero gli apici mi direbbe "syntax error"
  • Re: Problema database SQLite in c#

    Come gli passi il valore con il textbox?

    Non sottovalutare i suggerimenti del forum ... NON è detto che ti dia syntax error ... hai provato con 'mestolo' ?
  • Re: Problema database SQLite in c#

    E comunque, nei command vanno usati i parametri.
  • Re: Problema database SQLite in c#

    oregon ha scritto:


    Come gli passi il valore con il textbox?

    Non sottovalutare i suggerimenti del forum ... NON è detto che ti dia syntax error ... hai provato con 'mestolo' ?

    Si ho provato con 'mestolo' ma vs mi da errore perche mi dice che ci sono troppi caratteri all'interno degli apici. Ho provato lo stesso scrivendo solo 'c' ma da sempre la stessa eccezione. Riguardo al tuo "come passi il valore con text box?" , ti spiego meglio: io ho un file txt che faccio leggere al programma, contente una serie di parole. Una volta letto il file ho una List per memorizzarle e vorrei che il database aggiungesse le parole della List
  • Re: Problema database SQLite in c#

    gibra ha scritto:


    E comunque, nei command vanno usati i parametri.
    Lo so, quel "mestolo" è di prova il valori li passo in un altro modo
  • Re: Problema database SQLite in c#

    mitikuzzo98 ha scritto:


    gibra ha scritto:


    E comunque, nei command vanno usati i parametri.
    Lo so, quel "mestolo" è di prova il valori li passo in un altro modo
    Quindi tu chiedi aiuto scrivendo una cosa, mentre ne fai un'altra? Ottimo!!!

    Va beh, se hai voglia di giocare agli indovinelli, fai pure, ma così non ne esci fuori.
    Ma non si può chiedere aiuto in un forum e mostrare codice scritto 'alla carlona'.
    Devi mostrare il codice REALE, indicando i valori REALI.

    Poi, vedi tu...
  • Re: Problema database SQLite in c#

    gibra ha scritto:


    mitikuzzo98 ha scritto:


    gibra ha scritto:


    E comunque, nei command vanno usati i parametri.
    Lo so, quel "mestolo" è di prova il valori li passo in un altro modo
    Quindi tu chiedi aiuto scrivendo una cosa, mentre ne fai un'altra? Ottimo!!!

    Va beh, se hai voglia di giocare agli indovinelli, fai pure, ma così non ne esci fuori.
    Ma non si può chiedere aiuto in un forum e mostrare codice scritto 'alla carlona'.
    Devi mostrare il codice REALE, indicando i valori REALI.

    Poi, vedi tu...
    L'ho fatto non perchè voglio giocare agli indovinelli, ma semplicemente perchè pensavo non fosse indispensabile alla risoluzione dato che credo sia slegata all'eccezione che mi viene data.
    In ogni caso ora sto rispondendo da smatphone quindi vi scrivo domani come sarebbe il codice "originale". Chiedo scusa se vi siete sentiti presi in giro, pensavo, come gia detto prima, che non fosse importante il codice come si sarebbe strutturato in caso di risoluzione, appunto perchè ho il problema a prescindere
  • Re: Problema database SQLite in c#

    gibra ha scritto:


    mitikuzzo98 ha scritto:


    gibra ha scritto:


    E comunque, nei command vanno usati i parametri.
    Lo so, quel "mestolo" è di prova il valori li passo in un altro modo
    Quindi tu chiedi aiuto scrivendo una cosa, mentre ne fai un'altra? Ottimo!!!

    Va beh, se hai voglia di giocare agli indovinelli, fai pure, ma così non ne esci fuori.
    Ma non si può chiedere aiuto in un forum e mostrare codice scritto 'alla carlona'.
    Devi mostrare il codice REALE, indicando i valori REALI.

    Poi, vedi tu...
    Come giustamente mi è stato fatto notare, questo è il codice originale:
    Codice della classe "SQL" dove scrivo le query
    
      public void PopolaDB()
            {
                // string query = "INSERT INTO Parola (name) VALUES (@par)", Lunghezza) VALUES (@par, @length)";
                string query = "SELECT FROM Parola (Parola) WHERE @Parola = colesterolo";
                           
                for (int i = 0; i < parole.Count(); i++)
                {
                    try
                    {
                        cmd = new SQLiteCommand("INSERT INTO         Parola(Parola, Lunghezza) VALUES (@par, @length)", conn);
                    cmd.Parameters.AddWithValue("@par", parole.GetParola(i));
                    cmd.Parameters.AddWithValue("@length", parole.GetParola(i).Length);
                    cmd.ExecuteNonQuery();
                    }
                    catch (Exception ex)
                    {
    
                    }
                }
            }
    
    Questo invece è il codice della classe "vocabolario" che legge e aggiunge le parole lette alla lista
    
    public void Leggi()
            {
                while (!leggi.EndOfStream)
                {
                    parole.Add(leggi.ReadLine().ToString());
                }
            }
    
            public string GetParola(int index)
            {
                Leggi();
                return parole[index];
            }
    
    Scusate ancora la perdita di tempo
  • Re: Problema database SQLite in c#

    String query = "SELECT FROM Parola (Parola) WHERE @Parola = colesterolo";

    hai provato

    string query = "SELECT FROM Parola (Parola) WHERE @Parola = 'colesterolo' ";
  • Re: Problema database SQLite in c#

    In questa stringa:
    string query = "SELECT FROM Parola (Parola) WHERE @Parola = colesterolo";
    1) (Parola) a che serve?
    2) colesterolo cos'è? (un oggetto, una stringa, ...)
  • Re: Problema database SQLite in c#

    Quattro errori in una singola stringa sql. Non c'è male
     string query = "SELECT FROM Parola (Parola) WHERE @Parola = colesterolo";
    • Select deve essere seguito da un elenco di campi o da * per selezionarli tutti
    • L'elenco dei campi va messo dopo la SELECT (Select Parola FROM Parola)
    • @Parola è il nome del campo, non è un parametro. Non ci vuole la @
    • colesterolo è chiaramente una stringa costante, ci vogliono gli apici
Devi accedere o registrarti per scrivere nel forum
12 risposte