Update dati SqlServerCE su palmare

di il
2 risposte

Update dati SqlServerCE su palmare

Ciao a tutti
sono nuovo di questo forum e ho un problema "angosciante" da porvi.
ho realizzato con VS 2005 express un progettino per palmare, uso SqlServeCE e mi connetto a un db per recuperare e visualizzare i dati in esso contenuti.
fin qui tutto bene...
ma se cerco di inserire nuovi record o di variarne il contenuto non ottengo quanto mi aspetto.
per l'esattezza non viene generata nessuna eccezione e la modifica viene memorizzata nel DataSet ma non viene registrata nel DB "vero"
questo è il codice che uso

Dim ds As New DataSet()
Dim con As New SqlCeConnection("Data Source =\Programmi\LucaTest\OS1.sdf;")
con.Open()

Dim Sql As String = "SELECT * FROM Articoli"
Dim cmd As New SqlCeCommand(Sql, con)
Dim SqlINS As String = "insert into Articoli values('valore 1','valore 2') "
cmd.CommandText = SqlINS
cmd.ExecuteNonQuery()

con.Close()

oppure

Dim ds As New DataSet()
Dim con As New SqlCeConnection("Data Source =\Programmi\LucaTest\OS1.sdf;")
con.Open()

Dim Sql As String = "SELECT * FROM Articoli"
Dim da As New SqlCeDataAdapter(Sql, con)
Dim cmd As New SqlCeCommand(Sql, con)

da.Fill(ds, "Articoli")

Dim cmdBuilder As New SqlCeCommandBuilder(da)
Dim dr As DataRow = ds.Tables("Articoli").NewRow()
dr("ID_Articolo") = "valore 1"
dr("DESC_Articolo") = "valore 2"
ds.Tables("Articoli").Rows.Add(dr)

da.Update(ds, "Articoli")

con.Close()

dov'è il problema???

grazie 1000...

2 Risposte

  • Re: Update dati SqlServerCE su palmare

    Mi sono accorto che sia facendo un inserimento con
    cmd.ExecuteNonQuery()

    che con
    da.Fill(ds, "Articoli")

    mi si genera un "Eccezione first-chance di tipo 'System.IO.FileNotFoundException' in mscorlib.dll"
    sapete da cosa può dipendere?

    grazie 1000...
  • Re: Update dati SqlServerCE su palmare

    Dunque, da quanto vedo nel primo codice gli errori sono due:
    Dim ds As New DataSet()
    Dim con As New SqlCeConnection("Data Source =\Programmi\LucaTest\OS1.sdf;")
    con.Open()

    Dim Sql As String = "SELECT * FROM Articoli"
    Dim cmd As New SqlCeCommand(Sql, con)
    Dim SqlINS As String = "insert into Articoli values('valore 1','valore 2') "

    cmd.CommandText = SqlINS
    cmd.ExecuteNonQuery()

    con.Close()
    Primo errore
    manca il Provider nella stringa di connessione, ovvero il riferimento al motere db a cui ti appoggi. L'struzione corretta è "Provider= nome del motore database ; Data Source=path del db da aprire"

    Esempio: "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=path-mio-db"
    Scusa ma non ritrovo la nomenclatura per il server Sql.

    Secondo errore
    l'istruzione di INSERT che prevede dopo il nome tabella la sequenza dei nomi delle colonne in cui inserire i valori. L'istruzione corretta è "INSERT INTO Articoli (colname1,colname2) VALUES('valore 1','valore 2');".

    Il secondo codice risente del primo errore, in quanto nella dichiarazione
    Dim con As New SqlCeConnection("Data Source =\Programmi\LucaTest\OS1.sdf;")
    continua a mancare il Provider.

    Spero di esserti stato utile .. e di non aver detto cavolate

    Titus
Devi accedere o registrarti per scrivere nel forum
2 risposte