Kun olet valmis Delphi-tietokantaratkaisu, viimeinen vaihe on asentaa se käyttäjän tietokoneeseen onnistuneesti.
ConnectionString lennossa
Jos käytit dbGo (ADO) -komponentteja,ConnectionString omaisuus TADOConnection määrittelee tietovaraston yhteydetiedot.
Tietenkin, kun luot tietokantasovelluksia, joita ajetaan useilla koneilla, yhteyden tietolähteeseen ei pitäisi olla kova koodattu suoritettavassa muodossa. Toisin sanoen tietokanta voi sijaita missä tahansa käyttäjän tietokoneella (tai jollain muulla) verkko verkossa) - TADOConnection-objektissa käytetty yhteysjono on luotava osoitteessa ajoaika. Yksi ehdotetuista paikoista yhteysjonon parametrien tallentamiseksi on Windows-rekisteri (tai voit käyttää "tavallista" INI-tiedostot).
Yleensä, jos haluat luoda yhteysjonon suoritusaikana, sinun on tehtävä
a) sijoita täydellinen polku tietokantaan rekisteriin; ja
b) joka kerta käynnistäessäsi sovelluksen, lue tiedot rekisteristä, "luo" ConnectionString ja "avaa" ADOConnection.
Tietokanta... Kytkeä!
Prosessin ymmärtämisen helpottamiseksi olemme luoneet näytteen "luuranko" -sovelluksen, joka koostuu yhdestä lomakkeesta (sovelluksen päämuoto) ja datayksiköstä. Delphin datamoduulit tarjoavat kätevän organisaatiotyökalun, jota käytetään sovelluksen osien eristämiseen, jotka käsittelevät tietokantayhteyttä ja liiketoimintasääntöjä.
onCreate Datamoduulin tapahtuma on paikka, johon sijoitat koodin rakentaaksesi ConnectionString dynaamisesti ja muodostamalla yhteyden tietokantaan.
menettely TDM.DataModuleCreate (Lähettäjä: TObject); alkaajos DBConnect sitten ShowMessage ('Yhdistetty tietokantaan!') muu ShowMessage ('EI kytketty tietokantaan!'); pää;
Huomautus: Datamoduulin nimi on "DM". TADOConnection-komponentin nimi on "AdoConn".
DBConnect -toiminto suorittaa tietokantaan yhdistämisen todellisen työn, tässä koodi:
function TDM.DBConnect: boolean; var conStr: merkkijono; ServerName, DBName: merkkijono; alkaaServerName: = ReadRegistry ('DataSource'); DBName: = ReadRegistry ('DataCatalog'); conStr: = 'Palveluntarjoaja = sqloledb;' + 'Tietolähde =' + palvelimen nimi + ';' + 'Alkukatalogi =' + DBName + ';' + 'Käyttäjätunnus = myUser; Password = myPasword "; Tulos: = väärä; AdoConn. Kiinni; AdoConn. ConnectionString: = conStr; AdoConn. LoginPrompt: = Väärä;jos (EI AdoConn. kytkettynä) sittenyrittää AdoConn. Avata; Tulos: = true; paitsipäällä E: Poikkeus tehdäalkaaMessageDlg ('Yhdistettäessä virhe tapahtui. tietokanta. Virhe: '+ # 13 # 10 + e. Viesti, mtError, [mbOk], 0);josEI TDatabasePromptForm. Suorita (ServerName, DBName) sitten Tulos: = väärä. muualkaa WriteRegistry ('DataSource', palvelimen nimi); WriteRegistry ('DataCatalog', DBName); // muista tämä toiminto Tulos: = DBConnect; pää; pää; pää; pää; //DBConnect
DBConnect-toiminto muodostaa yhteyden MS SQL Server -tietokantaan - ConnectionString rakennetaan paikallista connStr muuttuja.
Tietokantapalvelimen nimi on tallennettu Palvelimen nimi muuttuja, tietokannan nimi pidetään dbname muuttuja. Toiminto alkaa lukemalla nämä kaksi arvoa rekisteristä (mukautetun toiminnon avulla) ReadRegistry () menettely). Kun ConnectionString on koottu, soitamme sitten vain AdoConn. Avata menetelmä. Jos tämä puhelu antaa "totta", olemme onnistuneesti muodostaneet yhteyden tietokantaan.
Huomaa: Koska välitämme kirjautumistiedot nimenomaan ConnectionStringin kautta, Since data -moduuli on joka on luotu ennen päälomaketta, voit kutsua menetelmät turvallisesti MainFormin OnCreate-tietomodulista tapahtuma.LoginPrompt Ominaisuus on asetettu väärään, jotta estetään tarpeeton kirjautuminen -valintaikkuna.
"Hauska" alkaa, jos poikkeus tapahtuu. Vaikka Open-menetelmän epäonnistumiseen voi olla monia syitä, oletetaan, että palvelimen tai tietokannan nimi on huono.
Jos näin on, annamme käyttäjälle mahdollisuuden määrittää oikeat parametrit näyttämällä mukautetun valintaikkunan.
Esimerkkisovellus sisältää myös yhden lisälomakkeen (DatabasePromptForm), jonka avulla käyttäjä voi määrittää palvelimen ja tietokannan nimen Connection-komponentille. Tämä yksinkertainen muoto tarjoaa vain kaksi muokkausruutua, jos haluat tarjota käyttäjäystävällisemmän käyttöliittymän lisää kaksi ComboBox-kenttää ja täytä ne luetelemalla käytettävissä olevat SQL-palvelimet ja noutamalla tietokannat SQL-palvelimelta.
DatabasePrompt-lomake tarjoaa mukautetun luokan menetelmä nimeltään Suorita, joka hyväksyy kaksi muuttuvaa (var) parametria: ServerName ja DBName.
Käyttäjän tarjoamilla "uusilla" tiedoilla (palvelimen ja tietokannan nimi) kutsumme yksinkertaisesti uudelleen DBConnect () -toimintoa (rekursiivisesti). Tietysti tiedot tallennetaan ensin rekisteriin (käyttäen toista mukautettua menetelmää: WriteRegistry).
Varmista, että DataModule on ensimmäinen "muoto" luotu!
Jos yrität luoda tämän yksinkertaisen projektin itse, saatat kohdata käyttöoikeusloukkauksia koskevia poikkeuksia, kun ajat sovellusta.
Oletuksena ensimmäinen sovellukseen lisätty muoto tulee olemaan MainForm (ensimmäinen luotu). Kun lisäät datamoduulin sovellukseen, datamoduuli lisätään "automaattisesti luovien lomakkeiden" luetteloon muodona, joka luodaan päämuodon jälkeen.
Nyt, jos yrität soittaa jollekin datamoduulin ominaisuuksista tai menetelmistä MainFormin OnCreate-tapahtumassa, saat käyttöoikeusloukkauksen poikkeuksen - koska datamoduulia ei ole vielä luotu.
Tämän ongelman ratkaisemiseksi sinun on vaihdettava manuaalisesti datamoduulin luotu järjestys - ja asetettava se olemaan ensimmäinen sovelluksen luoma lomake (joko Projekti-Ominaisuudet-valintaikkunassa tai muokkaamalla) Projektoi lähdetiedoston).
Koska datamoduuli on luotu ennen päälomaketta, voit soittaa turvallisesti menetelmiä datamoduulista MainFormin OnCreate-tapahtumassa.