[ oggie @ 08.06.2009. 09:20 ] @
| U MSSQL bazi imam ovakav upit sa opcionim parametrima koji savrseno radi:
SELECT *
FROM Orders
WHERE (CustomerID = @CustomerID OR @CustomerID IS NULL)
AND (EmployeeID = @EmployeeID OR @EmployeeID IS NULL)
AND NOT (@CustomerID IS NULL AND @EmployeeID IS NULL)
Sada treba to isto da uradim za MySQL bazu, ali ne znam kako, probao sam nekako ovako ali ne ide;
SELECT *
FROM Orders
WHERE (CustomerID = ? OR ? IS NULL)
AND (EmployeeID = ? OR ? IS NULL)
AND NOT (? IS NULL AND ? IS NULL)
Da li postoji nacin da se u MySql-u da neki naziv parametra, ovako kad imam 10 znakova pitanja ne znam sta je sta? |
[ Igor Gajic @ 08.06.2009. 16:10 ] @
Code:
SELECT *
FROM Orders
WHERE (CustomerID = ?CustomerID OR ?CustomerID IS NULL)
AND (EmployeeID = ?EmployeeID OR ?EmployeeID IS NULL)
AND NOT (?CustomerID IS NULL AND ?EmployeeID IS NULL)
@ == ? u MySql
[ oggie @ 08.06.2009. 18:20 ] @
Hvala, ne mogu sad da isprobam, nemam MySql ovde... sutra odmah isprobavam...
Ako sam dobro shvatio poenta je da se parametar zove isto kao polje u bazi samo sa znakom pitanja.
E sad to me dovodi u drugu dilemu, kako napisati po tom principu ovaj upit:
Select * from Orders Where (Datum >= ?DatumOd AND Datum <=?DatumDo)
Znaci imam jedno polje Datum, a prosledjujem 2 parametra DatumOd i DatumDo, da li to moze ovako kako sam napisao ili ce da se buni jer parametar nema isto ime kao polje u bazi.
Drugo pitanje, kako napisati ovakav upit:
Select * from Orders Where CustomerId IN (pa ovde parametar za niz integera, koji bih prosledio kao string sa zarezima)
recimo
string parametar = "1,3,5"
Select * from Orders Where CustomerId IN (parametar)
U MSSQL serveru ovaj Where In upit radim tako sto u MSSQL imam Split funkciju, pa onda upitu prosledim niz kao string a split funkcija ga podeli na integere, ne znam da li to moze i MySql da proguta, kod MySql me najvise bune ti nazivi parametara, nikako ne bih da imam ? u upitu i da nagadjam sta je to.
[ Igor Gajic @ 08.06.2009. 18:36 ] @
1. Ne moras definisati isto ime za parametar kao sto je kolona. Npr:
Code:
MySqlCommand cmd=new MySqlCommand("Select * from Orders Where (Datum >= ?DatumOd AND Datum <=?DatumDo)",conn);
cmd.Parameters.Add("?DatumDo", MySqlDbType.DateTime).Value=DateTime.Now;
cmd.Parameters.Add("?DatumOd", MySqlDbType.DateTime).Value=DateTime.AddYears(-2.0d);
[ oggie @ 08.06.2009. 19:38 ] @
Hvala jos jednom, nisam napomenuo da ja ovaj upit pisem u Datatable Adapteru, ne radim iz koda, tako da mi se adapter stalno nesto buni. On sam doda neke parametre i da im neko svoje ime, pa ih ja u kolekciji parametara preimenujem, ali mi to nikako nije zgodno za odrzavanje. Zato trazim neki elegantniji nacin.
[ oggie @ 09.06.2009. 07:30 ] @
Code:
SELECT *
FROM Orders
WHERE (CustomerID = ?CustomerID OR ?CustomerID IS NULL)
AND (EmployeeID = ?EmployeeID OR ?EmployeeID IS NULL)
AND NOT (?CustomerID IS NULL AND ?EmployeeID IS NULL)
Nazalost, ovaj kod ne radi u datatable adapteru, buni se za ove parametre.
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.