onsdag 19 januari 2011

Koppla samman med SQL Servern

Nu är webben i gång med det mest grundläggande, huvud, meny, några textsidor och ett formulär. Nästa steg blir att lagra formulärets text i databasen.

Först gäller det att skapa en förbindelse med databasen lokalt. Jag väljer <dator>/SQLEXPRESS, väljer Windows Authentication, döper filen till Tools och klickar på ok. Filen skapas med en gång. Skapar sedan en tabell med 7 fält: id, headline, text, owner, createdate, changedate och deletedate.

Sedan gäller det att kontrollera indata. En speciellt viktig uppgift är att förhindra att användare använder mindre än-tecknet vilket är en säkerhetsrisk. Standardreaktionen i ASP.NET är att avbryta med ett omfattande svårbergipligt meddelande. För att stänga av det så lägger jag dels in validateRequest="false" sidans Page-direktiv och dels lägger jag in kommandot httpRuntime requestValidationMode="2.0" i web-config. Därmed har jag tagit på ASP.NETs hantering.

Nu måste jag lägga in en egen kontroll som identifierar dessa tecken och skriver ut ett begripligt felmeddelande. Det gör jag med funktionen Server.HTMLencode som översätter "farliga" tecken till ofarliga kombinationer som gör att rätt tecken visas för användaren.

Jag vill lagra datum och tid i databasens fält CreateDate. Det hämtar jag med DateTime.Now(). Om jag ska skriva ut datum så använder jag DateTime.Now().ToString("d").

En klurighet är att jag råkade namnge tabellen för användareuppgifter till Users. Det fungerar inte. Man får inte skriva t.ex. "SELECT id FROM user" då users är ett nyckelord.

Jag lägger sedan in en användare direkt i databasen med Database Explorer och läser uppgiften utan problem. Skriver programraderna som uppdaterar tabellen Person med data hämtat från konstanter i programmet. Det fungerar efter att jag rättat en del småfel och övergått till att använda sqlCommand.parameters.

Jag har skapat en connectionsString för local och en connectionString för remote behandling. Programmet ser sedan var det är genom att det lokalt finns en speciell fil. Kan programmet öppna den kör det lokalt, annars kör det remote. Enkelt, men alla verkar inte ha kommit på denna lösning av frågorna på nätet att döma.

Och så har jag uppdaterat den externa webben. Databaskopplingen externt är inte etablerad, men lokalt fungerar det bra. Så nästa steg blir att skapa den externa databasen med SQL Server Management Studio.

Inga kommentarer:

Skicka en kommentar