Baza podataka Library

poruka: 46
|
čitano: 4.240
|
moderatori: XXX-Man, vincimus
+/- sve poruke
ravni prikaz
starije poruke gore
14 godina
neaktivan
offline
Baza podataka Library

Pozz, imam za seminarski rad napraviti bazu podataka tako da ima vezu 1-1,1-N,N-N, generalizaciju i WPF aplikaciju.

Napravio sam GUI gdje mi se klikom na button Books otvara prozor koji pokazuje podatke u bazi tj. u tablici.

Dodao sam button Korisnici gdje bi mi se klikom na njega trebao otvoriti prozor sa podacima Korisnika koji nasljeđuje Members tablicu, ali taj mi pristup ne radi

jer mi Korisnici (Persons)  čine generalizaciju sa Članovima(Members).

 

Podatke u novi prozor sam umetao preko data grida i preko data sourca sam umetao tablicu u stvoreni data grid. 

Dijagram baze podataka http://img443.imageshack.us/img443/4804/qs1.png , ovako mi radi kada kliknem na button Knjige http://img836.imageshack.us/img836/6075/3l7.png.

 
0 0 hvala 0
14 godina
neaktivan
offline
Baza podataka Library

Zapeo sam na jednom problemu pa ako itko ima ideju kako da ga riješim:

Imam button Knjige i kada na njega kliknem otvori mi se prozor update (knjige)  koji sadrži Book_ID, BookName i Quantity i klikom na button Update javi mi se prozor s porukom "Unable to open database file".

 

public partial class Dodaj_Knjigu : Window

   {

     public Dodaj_Knjigu()

     {

       InitializeComponent();

     }

 

     string dbConnectionString = @"Data Source=M4CHIN3-PC\SQLEXPRESS;Initial Catalog=Library;Integrated Security=True;";

 

     private void button1_Click(object sender, RoutedEventArgs e)

     {

 

 

       SQLiteConnection sqliteCon = new SQLiteConnection(dbConnectionString);

 

 

       try

       {

         sqliteCon.Open();

         string Query = "update into Books set Book_ID =" + this.book_id.Text + "," + this.book_name.Text + "," + this.quantity.Text + " where Book_ID =" + this.book_id.Text ;

         SQLiteCommand createCommand = new SQLiteCommand(Query, sqliteCon);

         createCommand.ExecuteNonQuery();

         MessageBox.Show("Dodano");

         sqliteCon.Close();

       }

 

       catch (Exception ex)

       {

         MessageBox.Show(ex.Message);

       }

 
0 0 hvala 0
13 godina
neaktivan
offline
Re: Baza podataka Library

Da li radiš sa SQLLite-om ili sa SQL Serverom?

Poruka je uređivana zadnji put pet 5.7.2013 17:44 (royalhero).
14 godina
neaktivan
offline
Re: Baza podataka Library

U SQL Serveru sad sam tek skuzio da mi ne moze raditi :facepalm: tj. krivo radim, mozes li mi igdje dati primjer sa SQL Serverom da mogu ubacivati podatke u tablicu, dadati novu tablicu i brisati tablicu? Jer mi je jos samo to ostalo uspio sam napraviti da mi se u novom prozoru pokazu podatci iz tablice te sam dodao ispod te tablice 3 izbora (Dodaj, Izmjeni i Izbriši).

Poruka je uređivana zadnji put pet 5.7.2013 19:41 (Broken).
13 godina
neaktivan
offline
Re: Baza podataka Library

Umjesto SqlLiteConnection stavi SqlConnection, tako uradi za sve gdje je Lite. Za dodaj koristis SQL naredbu INSERT, za izmjenu UPDATE i za brisanje DELETE. Primjere pronadi na netu ima ih gomila, glupo je da se ponavljam.

 

Jesi li siguran da zelis kroz aplikaciju stvarati tablicu u bazi? To nije nesto sto se mjenja kroz aplikaciju...

14 godina
neaktivan
offline
Re: Baza podataka Library

Hvala, zadatak seminara mi je da mogu izmjenjivati podatke iz tablice i brisati, a za stvaranje isto moram ali to ne znam kako ostvariti jer mi se PK od Book sam generira njega ne mou unositi?

12 godina
neaktivan
offline
Baza podataka Library

..

Poruka je uređivana zadnji put sub 6.7.2013 14:53 (Xyloto).
 
0 0 hvala 0
14 godina
neaktivan
offline
Baza podataka Library

Hvala, radi mi samo kada zelim obrisati redak.

Dok za dodavanje retka i izmjenjivanje ne radi.

 

 

Dok mi za update javlja:

 

 

SqlConnection sqlConn = new SqlConnection(dBConnection);

 

       try

       {

         sqlConn.Open();

         string Query = @"UPDATE Books SET Book_ID = '" + this.book_id.Text + "' BookName = '" + this.book_name.Text +  "' Quantity = '" + this.quantity.Text + "' Language = '" + this.language.Text + "' Genre = '" + this.genre.Text + "' FirstName = '" + this.first_name.Text + "' LastName = '" + this.last_name.Text + "' WHERE Book_ID = '" + this.book_id.Text + "' ";

         SqlCommand cmdQuery = new SqlCommand(Query, sqlConn);

         cmdQuery.ExecuteNonQuery();

         MessageBox.Show("Izmjenjeno");

         sqlConn.Close();

       }

 

       catch (Exception x)

       {

         MessageBox.Show(x.Message);

       }

 

 

Ovdje javlja grešku: incorrect syntax near 'BookName' ?

Poruka je uređivana zadnji put sub 6.7.2013 14:58 (Broken).
 
0 0 hvala 0
13 godina
neaktivan
offline
Re: Baza podataka Library

Pazi na tipove podataka, kako si ih deklarisao u bazi, tako moraš i predavati.

16 godina
odjavljen
offline
Re: Baza podataka Library

Baš ti i ne ide SQL sintaksa. Fale ti zarezi

 

UPDATE books set book_id = 'blabla', bookname = 'blabla2', ... , lastname = 'lastname' WHERE book_id = 'bookid'

 

Osim toga, zadati book_id kao string je besmisleno jer PK bi trebao biti int, auto increment da se ne zahebavaš sa traženjem zadnjeg PKa i izbjegavanjem duplanja PKova.

 

P.S. Klasični ADO.Net {#}, kakav EF i L2SQL...

 

P.P.S. Nauči sintaksu SQLa prije rada sa SQLom.

 

P.P.P.S (Smijeh) - String.Format ti izgleda urednije nego ovo tvoje i manje mjesta za grešku. string query = String.Format("UPDATE table SET col1 = '{0}', col2 = '{1}', ... , coln = '{n-1}' WHERE id = {n}", string0, textbox_blabla.Text, ... , pkey_int);. I vidi da kod id-a nisam stavio ' ' jer nije string...

 

[edit] - već jedno peti edit al nema veze - nasjeo sam na tvoju grešku. Kod updatea, id (PK) ne diraj! Dakle, bez onog SET book_id... Riskiraš probleme po bazi.

http://nighthawk-software.blogspot.com/
Poruka je uređivana zadnji put sub 6.7.2013 15:59 (Sum_of_all_fears).
12 godina
neaktivan
offline
Baza podataka Library

..

Poruka je uređivana zadnji put sub 6.7.2013 16:03 (Xyloto).
 
0 0 hvala 0
14 godina
neaktivan
offline
Baza podataka Library

Hvala, sad cu provjeriti da li mi to radi.

 
0 0 hvala 0
14 godina
neaktivan
offline
Re: Baza podataka Library
Sum_of_all_fears kaže...

Baš ti i ne ide SQL sintaksa. Fale ti zarezi

 

UPDATE books set book_id = 'blabla', bookname = 'blabla2', ... , lastname = 'lastname' WHERE book_id = 'bookid'

 

Osim toga, zadati book_id kao string je besmisleno jer PK bi trebao biti int, auto increment da se ne zahebavaš sa traženjem zadnjeg PKa i izbjegavanjem duplanja PKova.

 

P.S. Klasični ADO.Net {#}, kakav EF i L2SQL...

 

P.P.S. Nauči sintaksu SQLa prije rada sa SQLom.

 

P.P.P.S (Smijeh) - String.Format ti izgleda urednije nego ovo tvoje i manje mjesta za grešku. string query = String.Format("UPDATE table SET col1 = '{0}', col2 = '{1}', ... , coln = '{n-1}' WHERE id = {n}", string0, textbox_blabla.Text, ... , pkey_int);. I vidi da kod id-a nisam stavio ' ' jer nije string...

 

[edit] - već jedno peti edit al nema veze - nasjeo sam na tvoju grešku. Kod updatea, id (PK) ne diraj! Dakle, bez onog SET book_id... Riskiraš probleme po bazi.

string Query = String.Format("UPDATE Books SET BookName = '{1}', Quantity = {2}, Language = '{3}', Genre = '{4}', FirstName = '{5}', LastName = '{6}' WHERE Book_ID = {0}", this.book_name.Text, this.quantity, this.language.Text, this.genre.Text, this.first_name.Text, this.last_name.Text, this.book_id.Text);

 

Javlja da mi je greska u BookName-u

Poruka je uređivana zadnji put sub 6.7.2013 16:28 (Broken).
13 godina
neaktivan
offline
Re: Baza podataka Library

Varijabla quantity je kojeg tipa?

14 godina
neaktivan
offline
Re: Baza podataka Library
royalhero kaže...

Varijabla quantity je kojeg tipa?

Int, ali javlja mi da je greska kod BookName-a koji je nvarchar u sql (ispravio sam u gornjem postu)

Poruka je uređivana zadnji put sub 6.7.2013 16:32 (Broken).
13 godina
neaktivan
offline
Re: Baza podataka Library

Daj cio kôd, i što koristiš this? Postaj kôd pa da vidimo.

 

Joj, pa polazi se od 0, ne od 1. Tek sad primjetim. Veliku si zbrku napravio... Ne možeš, ako si za book_id stavio {0}, postaviti ga zadnjeg. Usput book_id je primarni ključ i vjerovatno je int, moraš pretvoriti u int.

Poruka je uređivana zadnji put sub 6.7.2013 16:37 (royalhero).
14 godina
neaktivan
offline
Re: Baza podataka Library

using System;
using System.Data;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using System.Data.SqlClient;


namespace Library
{
    /// <summary>
    /// Interaction logic for Izmjeni_Knjigu.xaml
    /// </summary>
    public partial class Izmjeni_Knjigu : Window
    {
        public Izmjeni_Knjigu()
        {
            InitializeComponent();
        }


        string dBConnection = @"Data Source=M4CHIN3-PC\SQLEXPRESS;Initial Catalog=Library;Integrated Security=True;";

        private void izmjeni_Click(object sender, RoutedEventArgs e)
        {
           
                  
            SqlConnection sqlConn = new SqlConnection(dBConnection);

            try
            {
                sqlConn.Open();
                string Query = String.Format("UPDATE Books SET BookName = '{0}', Quantity = {1}, Language = '{2}', Genre = '{3}', FirstName = '{4}', LastName = '{5}' WHERE Book_ID = {6}", book_name.Text, Int32.Parse(quantity.Text), language.Text, genre.Text, first_name.Text, last_name.Text, Int32.Parse(book_id.Text));
                SqlCommand cmdQuery = new SqlCommand(Query, sqlConn);
                cmdQuery.ExecuteNonQuery();
                MessageBox.Show("Izmjenjeno");
                sqlConn.Close();
            }

            catch (Exception x)
            {
                MessageBox.Show(x.Message);
            }
           
           
        }
      
    }
}

16 godina
odjavljen
offline
Re: Baza podataka Library

I koji ti exception baci? Daj cijeli txt exceptiona. I kako query izgleda (stavi breakpoint na cmdQuery i pogledaj string Query).

http://nighthawk-software.blogspot.com/
14 godina
neaktivan
offline
Re: Baza podataka Library

invailid column name 'FirstName'

invaild column name 'LastName'

 

Kod breakpointa za string Query mi izbaci : UPDATE Books SET BookName = 'hhhdhd', Quantity = 34, Language = 'gagsah', Genre = 'ggagdga', FirstName = 'gdagdg', LastName = 'ggdhdhd' WHERE Book_ID = 3

 

FirstName i LastName mi se nalaze u drugoj tablici Authors, koja je u odnosu sa tablicom Books 1-N (jedan autor moze imati vise knjiga).

16 godina
odjavljen
offline
Re: Baza podataka Library

Zanimljiv problem. Što kaže SQL Management Studio kad pokušaš odvrtiti taj query? Dakle, direktno u bazi?

http://nighthawk-software.blogspot.com/
14 godina
neaktivan
offline
Re: Baza podataka Library
Sum_of_all_fears kaže...

Zanimljiv problem. Što kaže SQL Management Studio kad pokušaš odvrtiti taj query? Dakle, direktno u bazi?

 

U SQL mi javlja isti problem: invaild column name 'FirstName' i 'LastName'

16 godina
odjavljen
offline
Re: Baza podataka Library

Probaj pod ime tablice staviti Library.Books

http://nighthawk-software.blogspot.com/
14 godina
neaktivan
offline
Re: Baza podataka Library

Javlja mi: Invalid object name 'Library.Books' (SQL studio)

16 godina
odjavljen
offline
Re: Baza podataka Library

Misterija. Ako možeš, daj zapakiraj solution i bazu u .zip i uploadaj negdje da pogledam.

http://nighthawk-software.blogspot.com/
14 godina
neaktivan
offline
Re: Baza podataka Library

Ok, poslat cu ti i bazu Library

14 godina
neaktivan
offline
Baza podataka Library

Poslao sam ti P.M

 
0 0 hvala 0
14 godina
neaktivan
offline
Baza podataka Library

Kako da preko text boxa kad loadam prozor da mi se u text box-u ispise datum i jos jedan datum sa pomakom od godinu dana. Te moze li se to pretvoriti u format koji odgovara formatu vremena u SQL-u.

 
0 0 hvala 0
16 godina
odjavljen
offline
Re: Baza podataka Library

txtbox.Text = DateTime.Now.AddYears(1).ToString();

 

A za u SQL, pogledaj ovo.

 

 

http://nighthawk-software.blogspot.com/
14 godina
neaktivan
offline
Re: Baza podataka Library
Sum_of_all_fears kaže...

txtbox.Text = DateTime.Now.AddYears(1).ToString();

 

A za u SQL, pogledaj ovo.

 

 

 

Hvala radi mi :)

14 godina
neaktivan
offline
Baza podataka Library

Možete li mi još samo dati neki primjer metode ako ima kako da kad posudim neku knjigu da mi se smanji količina knjige za jedan kada kliknem na button posudi.

Poruka je uređivana zadnji put pon 8.7.2013 0:25 (Broken).
 
0 0 hvala 0
Nova poruka
E-mail:
Lozinka:
 
vrh stranice