webForumDet fria alternativet

Parametrar

20 svar · 666 visningar · startad av DavidB

DavidBMedlem sedan jan. 20001 372 inlägg
#1

Tänkte jag skulle testa att använda mig utav parametrar när jag skall hämta data från min databas men jag får det inte att fugnera.

Har följande kod:

public DataSet ListUser(string strUsername){
	string SQLStmt = "SELECT id From Users Where username = @Username";

	OdbcCommand myCommand = new OdbcCommand(SQLStmt,objConn);

	OdbcParameter paramUsername = new OdbcParameter("@Username", OdbcType.VarChar);
	paramUsername.Value = strUsername;
	myCommand.Parameters.Add(paramUsername);

	return GetDataSet(myCommand);		
}

Problemet är att det att jag inte får ut nån data när jag testar koden, men om jag ändrar SELECT id From Users Where username = @Username till SELECT id From Users Where username = '" + strUsername + "' så fungerar det.

Ser nån vad som kan vara fel?

DavidBMedlem sedan jan. 20001 372 inlägg
#2

löste det:

public DataSet ListUser(string strUsername){
	string SQLStmt = "SELECT * From Users Where Username = [b]?[/b]";

	OdbcCommand myCommand = new OdbcCommand(SQLStmt,objConn);

	OdbcParameter paramUsername = new OdbcParameter("@Username", OdbcType.VarChar, 10);
	paramUsername.Value = strUsername;
	myCommand.Parameters.Add(paramUsername);

	return GetDataSet(myCommand);		
}

Skall vara ett ? istället för @Username

NETworkMedlem sedan juni 20011 732 inlägg
#3

Hm, ett frågetecken!? Nä, det kan inte stämma, det ska vara ett @ framför namnet. Frågetecken är väl i sql det samma som "allt", dvs du hämtar alla users och din parameter används inte över huvudtaget. Det ska i alla fall vara ett @ framför, det är jag ganska säker på och det fungerar för mig.

Här har du ett kodexempel:
http://www.dotnetjunkies.com/quickstart/util/srcview.aspx?path=/quickstart/aspplus/samples/webforms/data/datagrid3.src&file=CS\datagrid3.aspx&font=3

DinoMedlem sedan sep. 20011 914 inlägg
#4

Man använder frågetecken när man jobbar mot access.

PMedlem sedan jan. 20012 204 inlägg
#5

Och mot mysql via Odbc och man kan använda det med mssql också.

Bra för "db-wrappers"

WalkerMedlem sedan okt. 2002188 inlägg
#6

Bara en liten kommentar..

Varför ett helt dataset för en integer?

PMedlem sedan jan. 20012 204 inlägg
#7

DavidB ... gör du lite större applicationer verkar din kod ganska omständig. Skapa en dataklass och lägg där in funktioner för att Returnera dataset med hjälp av sql-stringen och funktioner för att lägga till Parametrar.

DavidBMedlem sedan jan. 20001 372 inlägg
#8

Walker:
Det är bara kod som jag använder när jag testar om det fugnerar, skall hämta mer sen när jag skall använda koden.

P:
Har en databasklass som sköter det, GetDataSet(); är en sådan. Har även en för datareader och ExecuteNonQuery. LÄste i tråden om databashantering och där stog det att man skulle använda lager och det har jag gjort fast istället för att skicka en sträng med SQL frågan så skickar jag ett OdbcCommand.

Sen på tal om lager:
Jag har nu 3 lager.
1. Presentation
2. Ett lager där jag "tillverkar" alla SQL frågor.
3. Databasklasserna

I tråden om databashantering läste jag att vissa använde sig av 4 lager, jag testade detta men jag fattade inte riktigt vad Business lagret är till för?
När jag använde mig av den "modellen" så kändes detta lager onödigt så jag tog bort det.

WalkerMedlem sedan okt. 2002188 inlägg
#9

ok..

Business lagret skall vara till för att kontrollera den datan som du stoppar in, tex så att ett datum ligger före ett annat, att en sträng har ett visst format också vidare. Kort sagt alla kontroller som du kan behöva. Behöver man inte så tar man bort det :)

NETworkMedlem sedan juni 20011 732 inlägg
#10

Dino skrev:

Man använder frågetecken när man jobbar mot access.

Aha, det visste jag inte. Sorry! :)

PMedlem sedan jan. 20012 204 inlägg
#11

Business: Arbetar med informationen.

Valideringar och sånt har jag i presentationslagret med RequiredXXX

PatrikBMedlem sedan mars 20002 836 inlägg
#12

P skrev:

Business: Arbetar med informationen.

Valideringar och sånt har jag i presentationslagret med RequiredXXX

som funkar tills det kommer en besökare som stängt av javascript.

Javascript validering bör man ha OCH även en server-side validering

cya,
PatrikB

DavidBMedlem sedan jan. 20001 372 inlägg
#13

så det valideringarna körs bara med JavaScript?

trodde att det körde både client och server validering.

NETworkMedlem sedan juni 20011 732 inlägg
#14

DavidB skrev:

så det valideringarna körs bara med JavaScript?

trodde att det körde både client och server validering.

Jo, det stämmer. Har klienten javascript avslaget så validerar den automatiskt på servern.

Men sen har man ju ofta andra typer av valideringar... exempelvis ett telefonnummer som kan skrivas in på en mängd olika sätt men som måste se ut på ett visst sett inne i din applikation. Här kanske du inte vill tvinga användaren att skriva telefonnumret på ett visst sätt utan låta han använda bindestreck, mellanslag, riktnumemr och annat hur han vill och att du sedan bakom i ditt affärlager tar hand om formateringen utan att användaren behöver tänka på det!

Sedan har du ju ofta valideringar mellan klasser, så att du aldrig skickar in fel data mellan klasser och funktioner som kan krascha applikationen.

PMedlem sedan jan. 20012 204 inlägg
#15

Business är inte det mera ett "arbetar" lager. Du hämtar data etc arbetar med dem och sedan returnerar resultatet till presentationslagret?

DavidBMedlem sedan jan. 20001 372 inlägg
#16

okej, men säg då att jag har ett Buisnesslager och jag skall lägga t ex två datum i databsen och då skall kolla som Walker skrev att ett datum ligger före ett annat, hur skall jag då skicka tillbaka data om att så inte är fallet?

Vill ju helst ha det utskrivet på sidan som de andra validatorerna och då tycker jag det verkar smidigast med CustomValidator?

Sen som NETwork sa att man inte skall tvinga användaren att skriva i ett visst format utan formatera det efter som man vill ha det. Funderade lite på det och kom fram till att jag inte har så månge sådana saker som skall skrivas om, e det itne lika bra att lägga detta i presentationslagret då?

WalkerMedlem sedan okt. 2002188 inlägg
#17

Hej

har inte så mycket erfarenhet av asp.net än, utan håller mest på med windows applikationer, så tänk på det :r Så detta bli egentligen inte ett svar på din fråga..

men så här har jag gjort i mina bl klasser.

I varje set properties så kontrollerar jag om det är ett korrekt värde som sätts. Om det är två datum så får jag kolla först om det tidigaste datumet är satt när det andra datumet sätts. Skulle det gå fel så kastar jag ett exceptions, eller skapar en event som heter OnError, som visar vilket fält det var som var fel som jag sen kan stoppa in till min errorprovider.

PMedlem sedan jan. 20012 204 inlägg
#18

Errorprovider :)

Tänk att du ska kunna ha samma business/data klasser till ett winform och ett webform projekt.

WalkerMedlem sedan okt. 2002188 inlägg
#19

ja?

Denna exception eller händelsen fångar jag i gränssnittet som sedan hanterar det, i detta fall en errorprovider. händelsen skapas i bl och fångas sen av det lagret som kan hantera, visa felet.

Ser inget problem med det..

Som en parantes, jag har en klass som ligger mella guit och bl som jobbar som controller, controllern matar guit med data då det har skett några uppdateringar, fel osv..

tihiMedlem sedan maj 200235 inlägg
#20

Maxlength tillsammans med TextBoxMode.Multiline

Jag undrar om det är nån som vet hur man kan sätta en max antal tecken tillsammans med TextBoxMode.MultiLine? Det fungerar ju inte att ha Maxlength tillsammans med en MultiLine.

139 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)