SDF databaza   otázka

VB.NET

Caute pouzivam databazu typu sdf a mam nasledujuce problemy:

1.

V databaze mam pole datu_narodenia ktory je typu DATE. Ak do pola ulozim prazdnu hodnotu (NOTHING ziaden datum) a naslednem si prezriem data ulozene v tabulke tak tam namiesto null mam 1.1.1900. Viete mi poradit preco? ja by som tam potreboval NULL.

2.

Ako nastavit DateTimePicker aby mi vracal datum v tvare napr. 12.1.2006 a nie v tvare 1/12/2006

vdaka

cujan

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Stačí povolit null hodnotu na tabulce. Dále jakým způsobem to ukládáte? Co je hodnota nothing je to null?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

1. Jakým způsobem hodnotu do databáze vkládáte? Kus kódu by neškodilo.

2. DateTimePicker má nějakou vlastnost Format, kde můžete říci formát, jak se datum bude zobrazovat uživateli. Asi je možné nechat si od DateTimePickeru vrátit i datum v textové podobě a pracovat s ním, ale to je velmi nevhodné. DateTimePicker má nějakou vlastnost (Value nebo SelectedDate, teď nevím), která vrací proměnnou typu DateTime, ježto je pro práci s datem a časem určená. Má vlastnosti Day, Month, Year, Hour, Minute, Second atd., podporuje přičítání časových intervalů atd. I databázová vrstva má pro sloupce data a času raději tento datový typ. Navíc si jej kdykoliv můžete převést na string v jakémkoliv formátu, jakého se vám zamane.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Caute takze:-)

1.

If Datum_narodeniaDateTimePicker.Checked = False Then
            datum_narodenia = Nothing
        Else
            datum_narodenia = CDate(Datum_narodeniaDateTimePicker.Text)
        End If

 Dim con As New SqlCeConnection("Data Source=|DataDirectory|\db_internat.sdf")
        con.Open()

Dim com As New SqlCeCommand("INSERT INTO student (priezvisko, meno, datum_narodenia, miesto_narodenia, rodne_cislo, bydlisko, telefon, cislo_op, op_vydal, op_vydany_dna, skola_odkial_prichadza, skola_ktoru_bude_navstevovat, studijny_odbor, vzdialenost_bydlisko_internat, zaluby, zz_meno, zz_priezvisko, zz_datum_narodenia, zz_povolanie, zz_adresa_zamestnavatela, zz_telefon, zz_poznamka, id_skupina) VALUES ('" & priezvisko & "','" & meno & "','" & datum_narodenia & "','" & miesto_narodenia & "','" & rodne_cislo & "','" & bydlisko & "','" & telefon & "','" & cislo_op & "','" & op_vydal & "','" & op_datum_vydania & "','" & skola_odkial_prichadza & "','" & skola_ktoru_navstevuje & "','" & studijny_odbor & "','" & vzdialenost_bydlisko_internat & "','" & zaluby & "','" & zz_meno & "','" & zz_priezvisko & "','" & zz_datum_narodenia & "','" & zz_povolanie & "','" & zz_adresa_zamestnavatela & "','" & zz_telefon & "','" & zz_poznamka & "','" & id_skupina & "')", con)
com.ExecuteNonQuery()
 con.Close()

Takze toto je kod pomocou ktoreho vkladam data do databazy. Cize rozhodovacia strukutua plus klasicky insert.

2.

a druhy problem som asi zle opisal, cize skusim trosku jednoduchsie:

cize o ten format my slo iba preto ze ked nacitam hodnotu z datetimepickeru do premennej datum_narodenia (typ date) a nasledne dam cely zaznam vlozit do databazy tak my vrati nsledujucu chybu

"There was an error in a part of the date format. [ Expression (if known) = ]"

vdaka

nahlásit spamnahlásit spam -1 / 1 odpovědětodpovědět

První věc tvořte Insert command s parametry. Tenhle způsob není zrovna to pravé ořechové, už jenom proto, že asi takhle by tam ten datum nevložil nikdy.

http://msdn.microsoft.com/en-us/library/...

Datum musí mít spravný tvar např:

{TS'2009-10-16 00:00:00'}. Pokud by jste tam chtěl mít null tak tam zkuste jenom pro zkoušku vložit null hodnotu popř. 'null'. SQLCommand funguje zhruba tak jako když si otevřete SQL management studio a tento SELECT by jste na dané tabulce zavolal.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Pokud budete používat parametry, veškeré výše uvedené problémy zmizí. Skládání SQL stringů by se používat nemělo.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Len tak informacne, nejaku stranku po slovensky alebo cesky ohladom toho skladania parametrov?

samozrejme idem teraz prehladat tento web :-)

resp. nemozete mi tu hodit nejaky priklad jednoduchy aby sa mi to lahsie hladalo?

dikes

cujan

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Caute

takze problem s vkladanim datumu som poriesil odpoved najdete na

http://www.vbnet.cz/blog-clanek--203-pro...

poriesil som to asi takto

Dim con As New SqlCeConnection(connectionString:="Data Source=|DataDirectory|\pokusna_db.sdf")
        con.Open()

        Dim com As New SqlCeCommand("INSERT INTO pokus (nazov, datum) VALUES (@p1,@p2)", con)

        com.Parameters.AddWithValue("p1", nazovTextBox.Text)
        com.Parameters.AddWithValue("p2", DateTimePicker1.Value)
        'com.Parameters.AddWithValue("Datum", Now)


        com.ExecuteNonQuery()
        con.Close()

len som zatial neporiesil vkladanie prazdnej hodoty.

Napada niekoho nieco?

vdaka

cujan

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Caute takze poriesil som uz aj tie prazdne hodnoty datumu

staci upravit parameter

 com.Parameters.AddWithValue("p2", DBNull.Value)

teda spon dufam ze to je relevantne riesenie.

pekny vecer a prispevok povazujem za uzavrety.

cujan

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback