Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    21

    [c#] Gestione dei Database in locale

    Salve a tutti,
    Sto cercando di creare un'applicazione contenente una datagrid che l'utente puo modificare e salvare quando necessario, e,ovviamente, i dati devono rimanere salvati anche una volta chiusa l'applicazone.
    Il mio problema è che per salvare la datagrid devo per forza creare un database e interagire con esso, e non saprei nemmeno da dove cominciare...
    Data la mia scarsa conoscenza sui DB mi sono informato e ho trovato che si puo fare principalmente in 2 modi:
    -Con Database SQL
    -Con Database access
    Tuttavia basandomi sulla documentazione che ho trovato non riesco a creare "fisicamente" sul disco il file .mdf (o l'estensione relativa al dato database) in cui "copierò" i dati della mia datagrid.

    Ringrazio in anticipo coloro che risponderanno.

    N.B: Sono riuscito a modificare un database gia esistente, ma non a crearne uno da 0.

  2. #2
    un'altra strada potrebbe essere questa: http://www.html.it/articoli/sql-serv...eno-di-2-mb-1/

    io eviterei access!

  3. #3
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    A dire il vero puoi usare qualsiasi database, non solo SQL Server e Access (MySQL, Firebird, PostgreSQL, SQLite, ...) basta aver installato il provider/driver OleDB o ODBC apposito.

    Quale database usare dipende dall'uso che ne farai: se l'uso è solo in LOCALE (Mono-utente) può essere sufficiente un database basato su FILE (Access, SQLite, ...) se invece deve essere usato in multi-utenza allora è meglio un database basato su SERVER.

    Ogni tipo di database può essere creato e modificato dagli appositi strumenti che variano dal tipo di database.
    - se usi Access puoi usare MSAccess sempre che tu abbia Office installato.
    - se usi SQL Server, SQLServer CE, LocalDB puoi scaricarti il SQL Server Management Studio (SSMS)
    - per altro database devi documentarti
    Comunque per ogni database è previsto un tool che semplifica le operazioni di creazione, modifica, interrogazione, ecc.

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    21
    Quote Originariamente inviata da gibra Visualizza il messaggio
    A dire il vero puoi usare qualsiasi database, non solo SQL Server e Access (MySQL, Firebird, PostgreSQL, SQLite, ...) basta aver installato il provider/driver OleDB o ODBC apposito.

    Quale database usare dipende dall'uso che ne farai: se l'uso è solo in LOCALE (Mono-utente) può essere sufficiente un database basato su FILE (Access, SQLite, ...) se invece deve essere usato in multi-utenza allora è meglio un database basato su SERVER.

    Ogni tipo di database può essere creato e modificato dagli appositi strumenti che variano dal tipo di database.
    - se usi Access puoi usare MSAccess sempre che tu abbia Office installato.
    - se usi SQL Server, SQLServer CE, LocalDB puoi scaricarti il SQL Server Management Studio (SSMS)
    - per altro database devi documentarti
    Comunque per ogni database è previsto un tool che semplifica le operazioni di creazione, modifica, interrogazione, ecc.
    Grazie per la risposta,
    Tuttavia il problema sorge nell'applicare questa logica al C#. Ho gia provato a smanettare con la classe c# System.Data.OleDb; tuttavia non sono riuscito a fare cio che mi ero prefissato
    Quello che vorrei fare è:
    Nel momento in cui l'utente preme sul pulsante "salva", il database viene creato con nome e specifiche date dall'utente, quindi viene creato via codice e non tramite programmi esterni...
    Se ho un database "vuoto" ho capito la logica per aggiungere/togliere righe colonne e tabelle, ma non quella che mi porta alla sua creazione.

    @fermat: Ora do un'occhiata, ma penso rientri comunque nel problema sopracitato

  5. #5
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Quote Originariamente inviata da valto92 Visualizza il messaggio
    Grazie per la risposta,
    Tuttavia il problema sorge nell'applicare questa logica al C#. Ho gia provato a smanettare con la classe c# System.Data.OleDb; tuttavia non sono riuscito a fare cio che mi ero prefissato
    Quello che vorrei fare è:
    Nel momento in cui l'utente preme sul pulsante "salva", il database viene creato con nome e specifiche date dall'utente, quindi viene creato via codice e non tramite programmi esterni...
    Se ho un database "vuoto" ho capito la logica per aggiungere/togliere righe colonne e tabelle, ma non quella che mi porta alla sua creazione.
    In pratica tu vuoi creare un programma che in sostanza replichi strumenti come l'SSMS di Microsoft.
    E' un progetto estremamente ambizioso. Complimenti.
    Una lettura a questo documento potrebbe esserti utile:

    DDL - Data Definition Language
    http://it.wikipedia.org/wiki/Data_Definition_Language


    Quote Originariamente inviata da valto92 Visualizza il messaggio
    @fermat: Ora do un'occhiata, ma penso rientri comunque nel problema sopracitato
    No, non lo è.

    Per i tuoi scopi puoi utilizzare il nuovo la nuova modalità Code First dell'Entity Framework 5.
    Questo articolo ti sarà certamente di aiuto per iniziare a muoverti in quest'ambito:

    Entity Framework Code First Migrations
    http://www.visual-basic.it/Dettaglio...x#.UqRTYxj-A18

  6. #6
    Utente di HTML.it L'avatar di gibra
    Registrato dal
    Apr 2008
    residenza
    Italy
    Messaggi
    4,244
    Quote Originariamente inviata da gibra Visualizza il messaggio
    Per i tuoi scopi puoi utilizzare il nuovo la nuova modalità Code First dell'Entity Framework 5.
    Pardon! Intendevo Entity Framework 4.1.

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    21
    Quote Originariamente inviata da gibra Visualizza il messaggio
    In pratica tu vuoi creare un programma che in sostanza replichi strumenti come l'SSMS di Microsoft.
    E' un progetto estremamente ambizioso. Complimenti.
    Una lettura a questo documento potrebbe esserti utile:

    DDL - Data Definition Language
    http://it.wikipedia.org/wiki/Data_Definition_Language



    No, non lo è.

    Per i tuoi scopi puoi utilizzare il nuovo la nuova modalità Code First dell'Entity Framework 5.
    Questo articolo ti sarà certamente di aiuto per iniziare a muoverti in quest'ambito:

    Entity Framework Code First Migrations
    http://www.visual-basic.it/Dettaglio...x#.UqRTYxj-A18
    Ok.. questo non è un bene, le mie conoscenze di C# non sono cosi avanzate da permettermi di imbarcarmi in progetti cosi ambiziosi... avevo pensato che un database era il modo migliore per salvare i dati di una datagrid, ma a quanto pare rischio si scrivere migliaia di righe di codice per un pragramma abbastanza banale :|

    Intanto lascio qui sotto quello che avevo scritto basandomi su cio che ho trovato in internet, magari puo far chiarezza sul mio problema e potete dirmi se cio che ho scritto ha un minimo senso o sono completamente fuori strada:

    codice:
    private void Create_DB(string path)
            {
                //Il replace non va bene
                string pathlog = path.Replace("mdf","ldf");
                string sqlconnstr = "Server=localhost;Integrated security=SSPI;database=master";
                string str = "CREATE DATABASE MyDatabase ON PRIMARY " +
                                    "(NAME = MyDatabase_Data, " +
                                    "FILENAME = '" + path + "', " +
                                    "SIZE = 2MB, MAXSIZE = 10MB, FILEGROWTH = 10%) " +
                                    "LOG ON (NAME = MyDatabase_Log, " +
                                    "FILENAME = '" + pathlog + "', " +
                                    "SIZE = 1MB, " +
                                    "MAXSIZE = 5MB, " +
                                    "FILEGROWTH = 10%)";
                SqlConnection myConn = new SqlConnection(sqlconnstr);
                SqlCommand myCommand = new SqlCommand(str, myConn);
                try
                {
                    myConn.Open();
                    myCommand.ExecuteNonQuery();
                }
                catch (System.Exception ex)
                {
                    MessageBox.Show(ex.ToString(), "Errore nella Creazione del File", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                finally
                {
                    if (myConn.State == ConnectionState.Open)
                    {
                        myConn.Close();
                    }
                }
            }
    Qusto codice si blocca sulla myConn.Open();, in quanto non trova il Server SQL a cui connettersi... considerando che è in locale no dovrebbe esistere un server... ma magari sono io che sono andato completamente fuori strada :|

    p.s. Doma quando torno vedo di informarmi su Entity Framework 5.

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2010
    Messaggi
    21
    Ok, un po' in ritardo ma sono riuscito a guardare quello che mi hai passato. Effettivamente sembra quello che cercavo, quindi grazie mille
    Tuttavia, come ho detto il progetto che sto facendo è abbastanza semplice, e usare un progetto ADO.net a sè stante per la gestione dei DB mi fa pensare che mi sto complicando la vita per nulla...
    Sono riuscito a fare cio che mi serviva con la classe ADOX... nel caso serva a qualcuno posto il codice:

    codice:
                    Catalog db = new Catalog();
                    db.Create("Provider=Microsoft.Jet.OLEDB.4.0;" +
                           "Data Source=" + path + ";" +
                           "Jet OLEDB:Engine Type=5");
                    db = null;

    Dove path è il percorso in cui andare a creare il DB. Si ottiene un file MDB vuoto a cui è possibile aggiungere tabelle e CO tramite codice SQL (o JET SQL, da quello che ho capito access non usa l'sql normale ma una sua "variante")
    Ultima modifica di valto92; 22-12-2013 a 13:37

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.