Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Artiklar / Titel på artikeln

Dynamiska parametrar för SP:s med Generic.List

Postad 2006-08-24 av David Hägg i sektionen ASP.NET, C#, Okategoriserat med 0 Kommentarer | Läst av: 2933, Betyg: 0%

Förord

När ett projekt skall kopplas mot en datakälla som ex. en MySql databas kan det vara bra att återanvända koden för att hämta data. Det är också rekommenderat att använda parametrar för att styra input till SQL frågan vare sig man använder Stored Procedures eller ej, eftersom detta förhindrar att skadliga frågor körs mot databasen då parametrar bara behandlas som parametrar och aldrig som ett kommando.
Innehåll
Jag brukar alltid skapa en klass som håller mina metoder för att hämta data då detta underlättar och snabbar upp utvecklingsarbetet.

I detta exempel kallar vi denna klass för dbClass i namnrymden WebPuclic. Kom ihåg att deklarera att vi använder MySql.Data.MySqlClient för att koppla upp oss mot datakällan:



using MySql.Data.MySqlClient;

namespace WebPublic
{
public class dbClass
{
public dbClass()
{
}

}
}



Denna klass innehåller bl.a. en metod för att anropa en Stored Procedure i en MySql databas:


public DataTable dtGetBySP(string strStoredProcedure, SPCollection collection)
{
try
{
// Skapa connection mot DB. Hämta connectionstring från web.config
MySqlConnection mySqlConn = new MySqlConnection(ConfigurationManager.ConnectionStrings["MySql"].ToString());
MySqlCommand mySqlCmd = new MySqlCommand(strStoredProcedure, mySqlConn);
mySqlCmd.CommandType = CommandType.StoredProcedure;

// Skapa parametrar utifrån de som sparats i kollektionen
for (int i = 0; i < collection.Count; i++)
{
mySqlCmd.Parameters.Add(collection[i].Name.ToString(), collection[i].Type).Value = collection[i].Value.ToString();
}

// Instansiera DataAdaptern
MySqlDataAdapter da = new MySqlDataAdapter(mySqlCmd);

// Skapa DataTable och fyll den med data via DataAdaptern
DataTable dt = new DataTable();
da.Fill(dt);
da.Dispose();

// Städa upp
mySqlCmd.Dispose();
mySqlConn.Close();
mySqlConn.Dispose();

return dt;

}
catch
{
return null;
}
}


Som ni märker skickar jag in collection av typen SPCollection till metoden. Det är nämligen denna som håller namnet, värdet och MySqlDBType typen på varje parameter.

Först skapar vi en struktur som heter SPType. Där definerar vi de propertys som skall finnas med i vår lista senare, i detta fall då Namn som sträng, värde som objekt och typ som MySqlDbType.



public struct SPType
{
public string Name;
public object Value;
public MySqlDbType Type;

public SPType(string name, object value, MySqlDbType type)
{
Name = name;
Value = value;
Type = type;
}
}



Sedan skapar vi en klass som ärver från System.Collections.Generic.List och vi måste därför använda oss av namnrymden System.Collections.Generic:


using System.Collections.Generic;


Själva klassen heter SPCollection och är just en kollektion av våra värden. Den ärver som sagt från Generic.List och har typen SPType som vi skapade i vår struktur lite tidigare:


public class SPCollection : List
{
// Skriver över Add() metoden i Generic.List
public void Add(string name, object value, MySqlDbType type)
{
this.Add(new SPType(name, value, type));
}
}


Som ni märker overridar vi metoden Add() i List klassen och lägger till vår egen struktur SPType där istället. När denna metod nu anropas kommer våra värden att sparas i objektet vi skapar.


// Konstruktor för dbClass
WebPublic.dbClass db = new WebPublic.dbClass();

// Lägg till SP till vår kollektion
Data.SPCollection collection = new Data.SPCollection();
collection.Add(new db.SPType("startDate", "2006-08-21", MySqlDbType.Date));
collection.Add(new db.SPType("stopDate", "2006-08-27", MySqlDbType.Date));

// Hämta resultatet till en DataTable
DataTable tCurrentAct = db.dtGetBySP("getActivity", collection);

// ... implementation



På detta sätt kan vi skicka in hur många parametrar vi vill till Stored Proceduren vilket är bra eftersom detta oftast varierar.
Upp

0 Kommentarer

Skriv en kommentar på artikeln

Ditt betyg på artikeln



Kommentar:





Nyligen

  • 08:28 Butiksskyltar: Hur upplever utbude
  • 22:31 Slappna av
  • 19:55 kick-off med fokus på hälsa?
  • 19:53 kick-off med fokus på hälsa?
  • 16:24 Föreslå en skönhetsklinik online
  • 16:23 Föreslå en skönhetsklinik online
  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 811
27 960
271 761
533
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies