Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 13 su 13

Discussione: INSERT piu' comodo

Hybrid View

  1. #1
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    Victor, la soluzione CON SQL SERVER piu' semplice sono I PARAMETRI con le stored procedures.

    Ti devi mettere in testa che per fare cose semplici devi passare per cose piu' complicate, solo per un'ora. La semplificazione delle cose, nella programmazione, viene dal lavoro preventivo e fatto UNA SOLA VOLTA. La OOP serve proprio a questo, alla semplificazione progressiva.



    Ti linko un estratto MOLTO SEMPLIFICATO dal layer che uso per gestire il DB, puoi usarlo, è semplice.
    (l'originale fa molto altro, transazioni, log4net, gestione della Retry etc)
    http://bit.ly/2erUUI4
    (mettilo in un file C#, cosi' passi ad un linguaggio piu' competitivo dal punto di vista del mercato)

    Esempio d'uso:

    STORED:
    codice:
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    CREATE PROCEDURE INSERISCI_RECORD
       @p1 VARCHAR(100),
       @p2 INT,
       @p3 VARCHAR(100)
    AS
    BEGIN
       SET NOCOUNT ON;
      
       INSERT INTO tabella (colonna1, colonna2, colonna3)
       VALUES (@p1, @p2, @p3)
       
       return @@error
    END
    GO

    PASSO 1
    nel Web.Config metti semplicemente la connectionString come da prassi:

    codice:
    <connectionStrings>   
     <add name="strconnDatabase" connectionString ="Data Source=NOME_SERVER; User Id=XXXXX; Password=XXXXX; Initial Catalog=NOME_DATABASE; Pooling=true;" /> 
    </connectionStrings>

    PASSO 2

    nel tuo file C# (dopo aver compilato il progetto con la tua classe presa dal file linkato), scrivi:

    codice:
    using System.Data.SqlClient;
    
    // ... altro codice
    
    DatabaseLibrary db = new DatabaseLibrary();
    
    // Parametri
    SqlParameter p1 = new SqlParameter("@nometuoparametro1", SqlDbType.VarChar, 100);
    p1.Value = "pippo";
    
    SqlParameter p2 = new SqlParameter("@nometuoparametro2", SqlDbType.Int);
    p2.Value = 2;
    
    SqlParameter p3 = new SqlParameter("@nometuoparametro3", SqlDbType.VarChar, 100);
    p3.Value = "pluto";
    
    SqlParameter[] parametri = { p1, p2, p3 };
    
    try
    {
       int retValue = db.ExecStored("NOME_DATABASE", "INSERISCI_RECORD", parametri);
    }
    catch (Exception ex)
    {
       throw ex;
    }


    e sara' eseguita la insert.

    PS: se usi questo metodo, a meno di non modificarlo, ricordati di inserire sempre return @@error
    alla fine delle tue stored altrimenti non funziona. Il metodo ExecStored torna L'ERRORCODE della stored.

    Se vuoi ti ri-posto tutto in VISUAL BASIC. E se vuoi (dopo che hai fatto dimestichezza con questo) ti posto il namespace completo, e' un piccolo progetto che condivido spesso e che e' in continuo sviluppo.
    Ultima modifica di djciko; 06-11-2016 a 16:39

  2. #2
    Utente di HTML.it
    Registrato dal
    Jun 2002
    Messaggi
    1,183
    per tutto questo è troppo complicato :-(
    ti ringrazio...ma pensavo ci potesse essere un sistema piu' rapido del
    insert (...) values (....)
    i quanto questo sistema è semplice se devi inserire dei dati in poche colonne...
    ma se le colonne diventano 60 e passa ti garantisco che ce da impazzire

    grazie
    victor
    ----------------------

  3. #3
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    Beh Victor...saro' franco, visto che e' domenica: se cerchi per forza modi ultra-semplici e non vuoi sbatterti piu' di tanto, pensaci bene a fare lo sviluppatore. Davvero Ci vuole tanta pazienza.

    Questo e' un copia ed incolla di un file, di 3 righe nel web.config e di un adattamento di poco codice.
    Se dovessi fare un'applicazione con Loggers, Dao, Serializzazioni, Chiamate a webservice, Ajax e Frameworks lato client come JQuery che fai ?

    Non c'e' da impazzire, basta sfruttare la programmazione ad oggetti, CHE TI PERMETTE DI SCRIVERE LE COSE UNA SOLA VOLTA, poi usare un po' di furbizia e COPIARE i parametri da dentro le stored e con un po' di abilita' (anche con Excel !) costruire il set di parametri da passare.

    Parla di stored perche' se hai a che fare con tanti dati, per questioni di performance, devi usare per forza quelle. E poi perche' è sconsigliatissimo comporre la query come stringa nel codice.

    Ho lavorato con stored con 180 parametri, (120 in input e 60 in output). Non per fare il gradasso eh, ti garantisco. E' che non mi scoraggio per è la quantita' delle cose, ma sono le tecnologie in genere e l'ambiente in cui sono calate: è la cosa che piu' deve spaventare un programmatore

    Un altro modo semplice di usare i parametri (con Access stavolta, in VB.Net) e' questo (preso da una risposta su SO):


    codice:
    Dim usernme, passwrd As String
    usernme = txtUsernm.Text
    passwrd = txtpasswrd.Text
    
    Dim constring As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Projects\MyDataBase.accdb"
    
    Using myconnection As New OleDbConnection(constring)
      myconnection.Open()
    
      Dim sqlQry As String = "INSERT INTO [tbl_user] ([username], [password]) VALUES (@usernme,    @passwrd)"
    
      Using cmd As New OleDbCommand(sqlQry, myconnection)
       cmd.Parameters.AddWithValue("@usernme", usernme)
       cmd.Parameters.AddWithValue("@passwrd", passwrd)
       cmd.ExecuteNonQuery()
      End using
    End using

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 © 2026 vBulletin Solutions, Inc. All rights reserved.