Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

c# pozivanje stored procedure - greška ntext is incompatible with int

[es] :: .NET :: .NET Desktop razvoj :: c# pozivanje stored procedure - greška ntext is incompatible with int

[ Pregleda: 2339 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

hrib
student

Član broj: 271107
Poruke: 18
193.198.27.*



Profil

icon c# pozivanje stored procedure - greška ntext is incompatible with int05.10.2011. u 17:43 - pre 152 meseci
imam stored proceduru:

Code:
ALTER PROCEDURE [dbo].[getAllTemeljniceByTipStanja] 
    @temeljnice_tipovi_stanja_id int
AS
BEGIN
    SET NOCOUNT ON;
    SELECT t.broj, tv.naziv AS temeljnice_vrste_naziv, t.datum, t.korisnici_kor_ime, t.vrijeme_izrade FROM temeljnice t
    INNER JOIN temeljnice_vrste tv ON (tv.id = t.temeljnice_vrste_id)
    INNER JOIN temeljnica_stanje ts ON (ts.temeljnice_broj = t.broj AND ts.temeljnice_tipovi_stanja_id = @temeljnice_tipovi_stanja_id);
END


u sql management studiu ovakvo pozivanje radi: exec getAllTEmeljniceByTipStanja '1';,
dok u c# ukoliko pozovem na ovaj način
Code:

List<StoredProcedureParameters> spp = new List<StoredProcedureParameters>();              
                spp.Add(new StoredProcedureParameters("@temeljnice_tipovi_stanja_id", Convert.ToInt32('1'), DbType.Int32));
                dsTemeljnice = DbHelper.SelectDataSetStora("getAllTemeljniceByTipStanja", spp);


stalno dobivam grešku Operand type clash: ntext is incompatible with int Broj greške: 206

StoredProcedure parameters je klasa sa tipovima string parametar, object vrijednost i Dbtype tip
SelectDataSetStora i druge metode izgledaju ovako:
Code:

        public DataSet SelectDataSetStora(string nazivProcedure, List<StoredProcedureParameters> listaParametara)// u izradi
        {            
            CreateStoredProcedure(nazivProcedure, listaParametara);

            IDataAdapter da = Database.CreateDataAdapter(_DbCommand);
            DataSet ds = new DataSet();
            da.Fill(ds);

            return ds;
        }


        public void CreateStoredProcedure(string nazivProcedure)
        {
            _DbCommand.CommandText = nazivProcedure;
            _DbCommand.CommandType = CommandType.StoredProcedure;
        }

        public void CreateStoredProcedure(string nazivProcedure, List<StoredProcedureParameters> listaParametara)
        {
            CreateStoredProcedure(nazivProcedure);
            foreach (StoredProcedureParameters p in listaParametara)
            {
                Console.WriteLine("__DbHelper: kreiram parametre store: " + p.Naziv + " " + p.Vrijednost + " " + p.Tip);
                Database.CreateParameter(p.Naziv, p.Vrijednost, p.Tip, _DbCommand);
            }
        }
 
Odgovor na temu

hrib
student

Član broj: 271107
Poruke: 18
193.198.27.*



Profil

icon Re: c# pozivanje stored procedure - greška ntext is incompatible with int05.10.2011. u 18:40 - pre 152 meseci
ako izostavim zadavanje DbType-a parametru onda radi (i ako zadam SqlDbType isto radi).
 
Odgovor na temu

Dusan Kondic
Programer
ZR "Parametar" Ljubovija
Ljubovija

Član broj: 49961
Poruke: 225
*.adsl-a-5.sezampro.rs.

Sajt: www.drinacoding.com


+14 Profil

icon Re: c# pozivanje stored procedure - greška ntext is incompatible with int06.10.2011. u 07:05 - pre 152 meseci
Proveri da nije zbog jednostrukih znakova navoda u konverziji jedinice u Int32
Code:
spp.Add(new StoredProcedureParameters("@temeljnice_tipovi_stanja_id", Convert.ToInt32('1'), DbType.Int32));

Ovde konverzija i nije potrebna. Probaj
Code:
spp.Add(new StoredProcedureParameters("@temeljnice_tipovi_stanja_id", 1, DbType.Int32));
 
Odgovor na temu

nikitaGradov
Beograd

Član broj: 223576
Poruke: 206
92.244.132.*



+3 Profil

icon Re: c# pozivanje stored procedure - greška ntext is incompatible with int06.10.2011. u 11:17 - pre 152 meseci
Citat:
hrib: imam stored proceduru:

Code:
ALTER PROCEDURE [dbo].[getAllTemeljniceByTipStanja] 
@temeljnice_tipovi_stanja_id int
AS
BEGIN
SET NOCOUNT ON;
SELECT t.broj, tv.naziv AS temeljnice_vrste_naziv, t.datum, t.korisnici_kor_ime, t.vrijeme_izrade FROM temeljnice t
INNER JOIN temeljnice_vrste tv ON (tv.id = t.temeljnice_vrste_id)
INNER JOIN temeljnica_stanje ts ON (ts.temeljnice_broj = t.broj AND ts.temeljnice_tipovi_stanja_id = @temeljnice_tipovi_stanja_id);
END


u sql management studiu ovakvo pozivanje radi: exec getAllTEmeljniceByTipStanja '1';,
dok u c# ukoliko pozovem na ovaj način
Code:

List<StoredProcedureParameters> spp = new List<StoredProcedureParameters>();              
                spp.Add(new StoredProcedureParameters("@temeljnice_tipovi_stanja_id", Convert.ToInt32('1'), DbType.Int32));
                dsTemeljnice = DbHelper.SelectDataSetStora("getAllTemeljniceByTipStanja", spp);


stalno dobivam grešku Operand type clash: ntext is incompatible with int Broj greške: 206

StoredProcedure parameters je klasa sa tipovima string parametar, object vrijednost i Dbtype tip
SelectDataSetStora i druge metode izgledaju ovako:
Code:

        public DataSet SelectDataSetStora(string nazivProcedure, List<StoredProcedureParameters> listaParametara)// u izradi
        {            
            CreateStoredProcedure(nazivProcedure, listaParametara);

            IDataAdapter da = Database.CreateDataAdapter(_DbCommand);
            DataSet ds = new DataSet();
            da.Fill(ds);

            return ds;
        }


        public void CreateStoredProcedure(string nazivProcedure)
        {
            _DbCommand.CommandText = nazivProcedure;
            _DbCommand.CommandType = CommandType.StoredProcedure;
        }

        public void CreateStoredProcedure(string nazivProcedure, List<StoredProcedureParameters> listaParametara)
        {
            CreateStoredProcedure(nazivProcedure);
            foreach (StoredProcedureParameters p in listaParametara)
            {
                Console.WriteLine("__DbHelper: kreiram parametre store: " + p.Naziv + " " + p.Vrijednost + " " + p.Tip);
                Database.CreateParameter(p.Naziv, p.Vrijednost, p.Tip, _DbCommand);
            }
        }


Dusan ti je naveo da ne konvertujes dobro: '1' je karakter (char) i Convert.ToInt32('1') ce da vrati vrijednost 49 (ASCII kod od karaktera '1').
Nije isto '1' i 1 - prvo je karakter, drugo je cio broj. U SQL-upitima se vrijednosti navode sa jednostrukim zapetama (exec getAllTEmeljniceByTipStanja '1' -> u ovom slucaju '1' bas znaci co broj 1), ali to ne vazi za C#.
Znaci, kao sto je Dusan napisao, bez ikakvih Convert-a i slicno.

Ja bih jos provjerio tabele, tipove podataka u tabelama, da li postoji neki podatak tipa 'ntext' (i jos, a mozda grijesim: kad navodis ime parametra, u metodi CreateParameter(), mislim da je simbol '@' viska, probaj ...).
Programming is fun, but writing good software is hard ...
 
Odgovor na temu

hrib
student

Član broj: 271107
Poruke: 18
193.198.27.*



Profil

icon Re: c# pozivanje stored procedure - greška ntext is incompatible with int10.10.2011. u 13:59 - pre 152 meseci
Code:
spp.Add(new StoredProcedureParameters("@temeljnice_tipovi_stanja_id", Convert.ToInt32('1'), DbType.Int32));

problem je bio u trećem parametru (DbType je općenita enumeracija, dakle za SqlServer treba SqlDbType.Int i tada radi).
napravio sam si metodu koja mi vraća SqlDbType ovisno o DbType-u.
 
Odgovor na temu

[es] :: .NET :: .NET Desktop razvoj :: c# pozivanje stored procedure - greška ntext is incompatible with int

[ Pregleda: 2339 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.