Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    [Vb.NET2005]Stringa Database Parametrizzata

    Ciao a tutti...
    sto creando un piccolo applicativo che purtroppo utilizza la connessione ODBC per accedere ad un DB in Sybase.

    Detto questo devo cercare di rendere l'applicativo il meno vincolato alla connessione..
    mi spiego :

    tramite una form vorrei che l'utente potesse accedere oppure selezionare il DSN UTENTE sull' odbc...

    io ora uso questa stringa già "prestabilita" :
    connessione.ConnectionString = "ODBC; Driver=Sybase SQL Anywhere 5.0; DefaultDir=z:\;Dbf=z:\database.db;Uid=custom;Pwd=c ustom;Dsn=database"

    ma ovviamente se il DB si dovesse trovare in un altra cartella, oppure il DSN dovesse avere un nome diverso, la connessione nn funzionerebbe...

    è possibile parametrizzare ( tipo come si fa con le query ) la stringa di connessione in base ad una scelta effettuata dall 'utente su un apposito form da me creato?

    un saluto e grazie

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Puoi memorizzare quella stringa di connessione dove vuoi (se non contiene dati delicati come nome utente e password...).
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    uhmmm no non posso...
    in quanto user e psw nn devono essere viste...

    a me interesserebbe solamente selezionare il DSN utente... da un form creato da me...ma dove la pesco questa informazione??
    e passare il nome DSN ad un altro form ( creato da me ovviamente ) che apre poi la connessione...

    a me basta il nome DSN in quanto l' odbc è già settato negli strumenti di amministrazione del PC...

    a me nn interessa che l'utente "abbia" in memoria la stringa in un file... in quanto a me va bene che ad ogni avvio del programma l'utente debba obbligatoriamente selezionare il database...

    spero di essermi spiegato bene...

    grazie alka

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    158
    Fai un bel form "Configurazione Connessione" dove infili una bella Combo con due valori :
    Connessione Diretta
    Connessione tramite DSN

    Se è abilitato il primo appare una textbox dove inserire il percorso fisico al database(magari con un tasto per richiamare una Openfilediag)

    Se è selezionato il secondo appare un atextbox dove inserire il nome del DSN utente o di Sistema che si vuole utilizzare(puoi anche farlo selezionare da ComboBox, non mi ricordo come ma c'è un modo per sapere i dsn presenti sulla macchina(sistema) e per l'utente).

    Se vuoi fare il professional metti un tasto "Testa Connessione" che utilizza i parametri appena immessi per comporre la stringa di connessione e stabilire una connection temporanea di prova col db.

    Poi c'è il tasto salva, che a seconda delle opzioni immesse salva in un file INI le info in un formato che può essere questo:

    codice:
    [DSN Connection Parameters]
    Enabled = 1
    DsnName = DSNUtente
    
    [Direct Connection Parameters]
    ENABLED =0
    DBLocation= C:\ilmiopercorso\ilmiodb.syb

    Poi quando l'applicazione parte, la prima cosa che fa è aprire il file ini, verificare quale chiave ha il parametro di Enabled settato a 1 e utilizza la stringa di connessione corretta per connettersi al database(non prima di aver richiesto all'utente Username e PWD)

    ciao
    DISCLAIMER
    quello che sta scritto qui sopra è dettato esclusivamente dall'intuito, non da specifiche conoscenze tecniche. Usate queste informazioni a vostro rischio e pericolo (anhe sui server di produzione

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    158
    Scusate ho sbagliato qualcosa e ho raddoppiato il post
    DISCLAIMER
    quello che sta scritto qui sopra è dettato esclusivamente dall'intuito, non da specifiche conoscenze tecniche. Usate queste informazioni a vostro rischio e pericolo (anhe sui server di produzione

  6. #6
    Originariamente inviato da vaitrafra
    Fai un bel form "Configurazione Connessione" dove infili una bella Combo con due valori :
    Connessione Diretta
    Connessione tramite DSN

    Se è abilitato il primo appare una textbox dove inserire il percorso fisico al database(magari con un tasto per richiamare una Openfilediag)

    Se è selezionato il secondo appare un atextbox dove inserire il nome del DSN utente o di Sistema che si vuole utilizzare(puoi anche farlo selezionare da ComboBox, non mi ricordo come ma c'è un modo per sapere i dsn presenti sulla macchina(sistema) e per l'utente).

    Se vuoi fare il professional metti un tasto "Testa Connessione" che utilizza i parametri appena immessi per comporre la stringa di connessione e stabilire una connection temporanea di prova col db.

    Poi c'è il tasto salva, che a seconda delle opzioni immesse salva in un file INI le info in un formato che può essere questo:

    codice:
    [DSN Connection Parameters]
    Enabled = 1
    DsnName = DSNUtente
    
    [Direct Connection Parameters]
    ENABLED =0
    DBLocation= C:\ilmiopercorso\ilmiodb.syb

    Poi quando l'applicazione parte, la prima cosa che fa è aprire il file ini, verificare quale chiave ha il parametro di Enabled settato a 1 e utilizza la stringa di connessione corretta per connettersi al database(non prima di aver richiesto all'utente Username e PWD)

    ciao

    grazie.. sei stato molto gentile...
    e di grande aiuto...
    allora la connessione diretta la scarto... in quanto il mio applicativo si appoggia ad un altro applicativo che di default usa un DSN... per cui devo sfruttare quello...

    creo come mi ha detto tu un form connessione config...
    e fin qua ok...
    le risorse del DSN sulla macchina... quelle devo pigliare....
    oppure creo una textbox... e l'utente inserisce il nome DSN che ha creato nel ODBC...

    tu mi dici di salvare il tutto in un .ini file...
    1) essendo un neofita... e di questo mi scuso... so salvare il dato in xml ma nn con l' ini...
    2) all'avvio dell'applicazione in teoria dovrei leggere il contenuto dell' ini file ed avviare la connessione... ma a livello di programmazione, come dovrò settare la stringa di connessione?

    ora sapendo già che il DSN si chiama test io ovviamente sulla mia classe di connessione ho messo connessione.connectionstring="DSN = test"

    devo parametrizzarlo come si fa con le query con il ?...

    ultima cosa... ho creato un dataset che ovviamente sfrutta la connessione al dsn = test...
    se la connessione cambia... ovviamente il dataset mi manda a remengo...
    si può parametrizzare anche questo?

    scusa per la mole di domande,... un saluto e grazie

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    158
    eheh...

    I dataset autogenerati da VS sono comodi ma molto, molto, molto poco malleabili.

    Andiamo con ordine.
    Puoi tranquillamente sostituire il fli INI con un file XML.
    Puoi anche salvare i lnome del DNS dentro ai parametri dell'applicazione visto che usi .NET
    L'ini era solo un'idea(un po' retrò per giunta )

    Per il parametro la cosa è abbastanza banale...
    All'inizio dell'applicazione ti apri il tuo bel file xml, leggi il campo DSN e lo metti in una variabile stringa qui chiamerò strDSNName.

    poi prendi l'oggetto oledbconnection che usi per connetterti al DB e scrivi


    codice:
    connessione.ConnectionString = "ODBC; Driver=Sybase SQL Anywhere 5.0;" & _ 
    "DefaultDir=z:\;Dbf=z:\database.db;Uid=custom;Pwd=custom;" & _
    "Dsn=""" & strDSNName & """
    Nota bene gli apici escapati ( )! ho letto su connectionstrings.com che è indispensabile mettere tra doppi apici il DSNName...se ti da errore togline 2 all'inizio e due alla fina

    :ciao:
    DISCLAIMER
    quello che sta scritto qui sopra è dettato esclusivamente dall'intuito, non da specifiche conoscenze tecniche. Usate queste informazioni a vostro rischio e pericolo (anhe sui server di produzione

  8. #8
    ok ho trovato....
    i DSN li salva nel file odbc.ini in c:\windows

    la stringa dentro il .ini file viene salvata così :

    [test]
    Driver32=C:\Sybase\SQL Anywhere 9\win32\dbodbc9.dll

    dove test appunto è il nome delle DSN di sistema o utente

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2006
    Messaggi
    158
    Originariamente inviato da ferrate
    ok ho trovato....
    i DSN li salva nel file odbc.ini in c:\windows

    la stringa dentro il .ini file viene salvata così :

    [test]
    Driver32=C:\Sybase\SQL Anywhere 9\win32\dbodbc9.dll

    dove test appunto è il nome delle DSN di sistema o utente
    ti ho risp sopra... ma funziona con quel dsn??

    comunque sia l'INI tientelo nella cartella della tua applicazione, non infilare puttanate nelle dir di sistema se non è strettamente necessario.
    DISCLAIMER
    quello che sta scritto qui sopra è dettato esclusivamente dall'intuito, non da specifiche conoscenze tecniche. Usate queste informazioni a vostro rischio e pericolo (anhe sui server di produzione

  10. #10
    Originariamente inviato da vaitrafra
    ti ho risp sopra... ma funziona con quel dsn??

    comunque sia l'INI tientelo nella cartella della tua applicazione, non infilare puttanate nelle dir di sistema se non è strettamente necessario.
    aspetta nn ci siam capiti....
    l' ini file è quello che genere l' odbc... non quello che genero io...

    ho trovato solo l 'ini che l' odbc crea quando setti una connessione..
    io da questo ini file potri in teoria recuperare il nome DSN...

    dico una bagianata?

    devo recuperare il valore [test] dall' ini e cazziarlo dentro la stringa di connessione...

    per cui....1 apro il file odbc.ini
    2 recupero i DSN name
    3 cazzio il valore nella stringa di connessione
    4 apro la connessione....

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.