IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
Adam Matis
Člen
Avatar
Adam Matis:28.4.2017 20:10

Ahoj mám problém s datovým typem v command.parameters sn.LokaceX visualko mi hlási chybu "argument3:cannot convert from float to int" typy jsem prokontroloval ale prostě chybu nevidím.Pokud by někdo věděl byl bych vděčný.

private void PrepareCommand(SqlCommand command, Se_nachazi sn)
        {


            command.Parameters.Add(new SqlParameter("@predmetId", System.Data.SqlDbType.Int, sn.PredmetId));
            command.Parameters["@predmetId"].Value = sn.PredmetId;

            command.Parameters.Add(new SqlParameter("@lokaceX", System.Data.SqlDbType.Float, sn.LokaceX));
            command.Parameters["@lokaceX"].Value = sn.LokaceX;


        }
 public class Se_nachazi
    {
        private int v_predmetId;
        private float v_LokaceX;
        private float v_LokaceY;
        private float v_LokaceZ;
public int PredmetId
        {
            get
            {
                return v_predmetId;
            }
            set
            {
                v_predmetId = value;
            }
        }

        public float LokaceX
        {
            get
            {
                return v_LokaceX;
            }

            set
            {
                v_LokaceX = value;
            }
        }
 
Odpovědět
28.4.2017 20:10
Avatar
Odpovídá na Adam Matis
don.jarducius:28.4.2017 22:00

Ahoj,
je nějaký důvod, proč používáš float ? Můžeš sem přidat definici tabulky v databázi ? Podle hlášky by to mohlo být i tam ... Bohužel bez SQL dotazu, který předáváš v SqlCommandu ti nikdo víc nepomůže ...
Ještě malá rada, tvoje třída se nachází se dá zjednodušit aby byla více čitelná:

public class Se_nachazi
{
public int PredmetId { get;set;}
public float LokaceX { get;set;}
public float LokaceY { get;set;}
....
}

nemusí tam být private deklarace ...

Nahoru Odpovědět
28.4.2017 22:00
Ten kdo nechce hledá důvod, ten kdo chce hledá způsob
Avatar
Adam Matis
Člen
Avatar
Adam Matis:28.4.2017 22:57
CREATE
  TABLE Se_Nachazi
  (
    Se_nachazi_Id INTEGER NOT NULL identity(1,1) ,
    ServerId      INTEGER NOT NULL ,
    PredmetId     INTEGER NOT NULL ,
    LokaceX FLOAT NOT NULL ,
    LokaceY FLOAT NOT NULL ,
    LokaceZ FLOAT NOT NULL
  )
  ON "default"
GO
ALTER TABLE Se_Nachazi ADD CONSTRAINT Se_Nachazi_PK PRIMARY KEY CLUSTERED (
Se_nachazi_Id)
WITH
  (
    ALLOW_PAGE_LOCKS = ON ,
    ALLOW_ROW_LOCKS  = ON
  )
  ON "default"
GO

No float používám protože u tohoto atributu potřebuji desetinné číslo ale zkoušel jsem to přepsat vše na decimal a problem je stejný
v sql commandu předávám jen obyčejný insert

public static String SQL_INSERT = "INSERT INTO Se_nachazi(ServerId,PredmetId,LokaceX,LokaceY,LokaceZ) VALUES(@serverId,@predmetId,@lokaceX,@lokaceY,@lokaceZ)";
 
Nahoru Odpovědět
28.4.2017 22:57
Avatar
Odpovídá na Adam Matis
don.jarducius:2.5.2017 21:45

Taky tam nic nevidím, nebo mi to uniká. Nicméně doporučuju pustit v debugu, zastavit těsně před spuštěním SQL dotazu a kouknout co je v commandu. Ještě jsem si všiml dalších zbytečností:
Toto zapiš

command.Parameters.Add(new SqlParameter("@predmetId", System.Data.SqlDbType.Int, sn.PredmetId));
            command.Parameters["@predmetId"].Value = sn.PredmetId;

Takhle:

command.Parameters.Add(new SqlParameter("@predmetId", sn.PredmetId));

Samo to pozná, co je to za datový typ a bude se to číst lépe. V druhém řádku jsi už jen znovu vnucoval hodnotu.

Nahoru Odpovědět
2.5.2017 21:45
Ten kdo nechce hledá důvod, ten kdo chce hledá způsob
Avatar
Adam Matis
Člen
Avatar
Adam Matis:2.5.2017 22:54

Jo děkuji za pomoc ale nakonec jsem to vyřešil chyba byla opravdu v typu viz
https://msdn.microsoft.com/…vs.110).aspx

Akceptované řešení
+5 Zkušeností
Řešení problému
 
Nahoru Odpovědět
2.5.2017 22:54
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.