Inserimento dati in tabella SQL

di il
7 risposte

Inserimento dati in tabella SQL

Buongiorno ragazzi ... chi più chi meno

ho un problema con l'inserimento in una tabella SQL vi posto in codice:

private void button1_Click(object sender, EventArgs e)
        {
            funzioni_DB fdb = new funzioni_DB();
            fdb.apriDB();

            
            try
            {
                decimal imp = Convert.ToDecimal(textBox3.Text);
                string sql = "INSERT INTO PrimaNota(DataMovimento,Emissario,TipoDocumento,NumeroDocumento,Categoria,Importo) VALUES ('" +
                                dateTimePicker1 + "','" + textBox1.Text + "','" + comboBox2.Text + "','" + textBox4.Text + "','" + imp + "','" + textBox3.Text + "')";
            }
            catch(Exception ex)
            {
                MessageBox.Show(Convert.ToString(ex));
            }
            fdb.chiudiDB();

            MessageBox.Show("Inserimento Completato!", "Conferma");
                    }
il problema è che non mi da errori, ma non inserisce effettivamente i dati nella tabella!

Specifiche tabella Prima Nota:
id - numeric (18,0)
DataMovimento - datetime
Emissario - varchar(50)
TipoDocumento - varchar(50)
NumeroDocumento - varchar(50)
Categoria - varchar(50)
Importo - decimal (18,0)
La colonna id ha come proprietà l'auto increment
Aiutino?

7 Risposte

  • Re: Inserimento dati in tabella SQL

    Non esistono tabelle SQL!
    SQL è un linguaggio dei database, non una tabella.

    Non si usa creare gli enunciati SQL in quel modo, che oltretutto è completamente sbagliata perché non tiene conto del TIPO di campo.
    Devi usare un xxxxCommand, dove xxxx identifica il tipo di Command in relazione al database che stia utilizzando (es. OleDbCommand, ...)
    Ti suggerisco di documentarti bene sui Command...
  • Re: Inserimento dati in tabella SQL

    Ciao

    Beh, se non esegui l'istruzione sql la vedo dura che funzioni. Cosa stai usando come strato DAO? Cerca nella documentazione relativa l'utilizzo di Excecute. Potrebbe esserci anche un ExcecuteNonQuery che sarebbe più adatto allo scopo. Tali metodi si trovano nella classe Command (il prefisso dipenderà dal provider che utilizzi).

    Inoltre occhio a usare le insert in quel modo, è fattore di SQL Injection. Il mio consiglio è quello scritto anche nella mia firma. Documentarsi prima, Studiare bene cosa si sta facendo e, quindi, trovare la strada migliore coi mezzi adatti per fare ciò, e studiarsi bene tali mezzi. Il tuo thread è un esempio tipico di fare senza documentazione. Anche solo sapendo le basi di programmazione si vede che si sta solo dichiarando una variabile. ma il suo utilizzo? dove viene usata quella string?

    Farsi queste domande prima di scrivere. Se poi scatta un'eccezione e non se ne esce fuori, noi siamo qua ovvio.
  • Re: Inserimento dati in tabella SQL

    fonzarelli ha scritto:


    Cosa stai usando come strato DAO?
    DAO in NET?
    Stai scherzando, vero?
  • Re: Inserimento dati in tabella SQL

    Ops, volevo dire ADO XD XD Errore di battitura
  • Re: Inserimento dati in tabella SQL

    Risolto inserendo:
    
    System.Data.SqlClient.SqlCommand comando = new System.Data.SqlClient.SqlCommand();
    comando.ExecuteNonQuery();
    
    
    e corretto il datetimepicker1 con
    dateTimePicker1.Value
    il codice funzionante completo è il seguente:
    
    private void button1_Click(object sender, EventArgs e)
            {
                funzioni_DB fdb = new funzioni_DB();
                fdb.apriDB();
    
                System.Data.SqlClient.SqlCommand comando = new System.Data.SqlClient.SqlCommand();
                comando.Connection = fdb.connav;
    
                try
                {
                    decimal imp = Convert.ToDecimal(textBox3.Text);
                    string sql = "INSERT INTO PrimaNota(DataMovimento,Emissario,TipoDocumento,NumeroDocumento,Categoria,Importo) VALUES ('" +
                                    dateTimePicker1.Value + "','" + textBox1.Text + "','" + comboBox2.Text + "','" + textBox4.Text + "','" + imp + "','" + textBox3.Text + "')";
                    comando.CommandText = sql;
                    comando.ExecuteNonQuery();
    
                }
                catch(Exception ex)
                {
                    MessageBox.Show(Convert.ToString(ex));
                }
                fdb.chiudiDB();
    
                MessageBox.Show("Inserimento Completato!", "Conferma");
            }
    
    Grazie mille per i consigli
  • Re: Inserimento dati in tabella SQL

    gibra ha scritto:


    Non esistono tabelle SQL!
    SQL è un linguaggio dei database, non una tabella.

    Non si usa creare gli enunciati SQL in quel modo, che oltretutto è completamente sbagliata perché non tiene conto del TIPO di campo.
    Devi usare un xxxxCommand, dove xxxx identifica il tipo di Command in relazione al database che stia utilizzando (es. OleDbCommand, ...)
    Ti suggerisco di documentarti bene sui Command...
    gibra non sono riuscito a trovare su ://msdn.microsoft.com spiegazioni esaurienti

    abbiate pazienza, sono autodidatta, e ce la sto mettendo tutta per migliorare
  • Re: Inserimento dati in tabella SQL

    Ciao... se posso permettermi, ti suggerisco di cercare su google queste due playlist:
    - Corso Visual Studio 2012 C# (Playlist 1) ITA (dovrebbero essere 45 lezioni)
    - Visual Studio 2012 / C# e data base ITA (se non sbaglio dovrebbero essere una ventina di lezioni)

    Da fare proprio nell'ordine che ti ho suggerito (prima le lezioni sul C# e poi quelle sui database con C#).

    Per quanto riguarda le lezioni sui database non si affronta l'ADO NET Entity Framework. Ma a parte questo, sono perfette per un livello principiante-medio. Tra l'altro il prof. Camuso ha una ottima capacità comunicativa (e, cosa non da poco, le lezioni sono completamente in italiano).
    ciao!
Devi accedere o registrarti per scrivere nel forum
7 risposte