Could not find stored procedure '...'

Could not find stored procedure '...'
LJ
  • Rejestracja:ponad 7 lat
  • Ostatnio:około 7 lat
  • Postów:3
0

Witam,
Parę lat temu przeszedłem kurs z C# na studiach, jeden semestr, był to zajęcia w konsoli, teraz wróciłem do C#, zgłębiam WPF. Mam pewien pomysł na aplikację z użyciem SQL. Jako, że jestem w tym zielony skorzystałem z tutoriala dostępnego w sieci.

Na tutorialu używana jest komenda:

Kopiuj
sqlCmd.CommandType =.CommandType.StoredProcedure;

u mnie kompilator nakazuję dodanie przed System.Data....
Wywnioskowałem ze ta własnie linijka jest odpowiedzialna za pokazanie błędu "Could not find stored procedure "

Niżej załączam moje kody źródłowe

Kopiuj
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
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.Navigation;
using System.Windows.Shapes;
using System.Data.SqlClient;

namespace nowa_
{
    /// <summary>
    /// Logika interakcji dla klasy MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        SqlConnection sqlCon = new SqlConnection(@"Data Source = (localdb)\MSSQLLocalDB");
        public MainWindow()
        {
            InitializeComponent();
        }

        private void DODAJ_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                if (sqlCon.State == System.Data.ConnectionState.Closed)
                    sqlCon.Open();
                SqlCommand sqlCmd = new SqlCommand("UbraniaDodajAlboEdytuj", sqlCon);


                sqlCmd.CommandType =System.Data.CommandType.StoredProcedure;


                sqlCmd.Parameters.AddWithValue("@mode", "dodaj");
                sqlCmd.Parameters.AddWithValue("@Id", "0");
                sqlCmd.Parameters.AddWithValue("@TYP", TYP_TXT.Text.Trim());
                sqlCmd.Parameters.AddWithValue("@KOLOR", KOLOR_TXT.Text.Trim());
                sqlCmd.Parameters.AddWithValue("@ROZMIAR", ROZMIAR_TXT.Text.Trim());
                sqlCmd.Parameters.AddWithValue("@MARKA", MARKA_TXT.Text.Trim());
                sqlCmd.Parameters.AddWithValue("@OPIS", OPIS_TXT.Text.Trim());
                sqlCmd.Parameters.AddWithValue("@CENA","0");
                sqlCmd.Parameters.AddWithValue("@CENA_RZ","0");
                sqlCmd.Parameters.AddWithValue("@NR_SERYJNY", NR_SERYJNY_TXT.Text.Trim());
               // sqlCmd.Parameters.AddWithValue("@SPRZEDANE", SPRZEDANE);
                sqlCmd.ExecuteNonQuery();
                MessageBox.Show("Zapisano Poprawnie");
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "bład 69");
            }
            finally
            {
                sqlCon.Close();
            }
        }
    }
}


stored procedure

Kopiuj
CREATE PROCEDURE [dbo].UbraniaDodajAlboEdytuj

	 @mode nvarchar(10),
	@Id int, 
	@TYP nvarchar(50),
	@ROZMIAR nvarchar(50),
	@MARKA nvarchar(50),
	@OPIS nvarchar(50),
	@CENA int,
	@CENA_RZ int,
	@NR_SERYJNY nvarchar(50),
	@SPRZEDANE int
AS
  IF @mode='dodaj' 
BEGIN
INSERT INTO tbl_ubrania
	(
	TYP,
	ROZMIAR,
	MARKA,
	OPIS,
	CENA,
	CENA_RZ,
	NR_SERYJNY,
	SPRZEDANE)
	VALUES 
	(
	@TYP,
	@ROZMIAR,
	@MARKA,
	@OPIS,
	@CENA,
	@CENA_RZ,
	@NR_SERYJNY,
	@SPRZEDANE
	)

	END

Jeśli ten tutorial i takie podejście jest nie poprawne to prosił bym o jakiś tutorial/książkę o tworzeniu aplikacji w WPF z baza danych.

edytowany 5x, ostatnio: Lukasz_Jab
DZ
  • Rejestracja:ponad 7 lat
  • Ostatnio:ponad 5 lat
  • Postów:9
1
  1. jeśli chodzi o
    sqlCmd.CommandType = System.Data.CommandType.StoredProcedure;
    to możesz sobie zrobić na górze referencję, czyli:
    using System.Data;
    i napisać:
    sqlCmd.CommandType = CommandType.StoredProcedure;
    ale to nic nie zmieni.

  2. odnośnie tego która linijka wywala błąd to polecam zielonemu koledze ^^ postawić break pointa (w Visualu F9) na klamrze otwierającej funkcję, odpalić debuggera (F5) i przekakiwać kod krok po kroku (F10).

  3. I taka ogólna rada, która raczej niewiele zmieni tutaj, ale na dłużą metę może wiele razy uratować tyłek:
    SqlCommand sqlCmd = new SqlCommand("UbraniaDodajAlboEdytuj", sqlCon);
    Jeśli chcesz żeby garbage collector (taki ziomek w C# co to śmieci wynosi bo tobie się nigdy nie chce) był twoim przyjacielem to nie twórz obiektów klas w funkcjach, tylko bierz takie rzeczy z zewnątrz. Najpierw w klasie zrób sobie pole
    public partial class MainWindow : Window
    {
    private SqlCommand sqlCmd;
    a potem w metodzie instancję:
    private void DODAJ_Click(object sender, RoutedEventArgs e)
    {
    try
    {
    if (sqlCon.State == System.Data.ConnectionState.Closed)
    sqlCon.Open();
    sqlCmd = new SqlCommand("UbraniaDodajAlboEdytuj", sqlCon);

pozdrawiam, powodzenia

E9
  • Rejestracja:ponad 13 lat
  • Ostatnio:11 miesięcy
  • Postów:395
0

Wykonałeś ten skrypt tworzący procedure w bazie?

Progress
  • Rejestracja:ponad 10 lat
  • Ostatnio:prawie 4 lata
  • Postów:220
1

Jeżeli chodzi o błąd to na pierwszy rzut oka connection string może tu być problemem.

"Data Source = (localdb)\MSSQLLocalDB"

Podałeś namiar na serwer, ale nie podałeś do jakiej bazy ma się łączyć, procedure z kolei masz na konkretnej bazie. Tu masz podane przykłady jak to zrobić.

Ogólnie jeżeli chodzi o tutorial, to miej na uwadze, że to nie jest właściwy sposób, aby tworzyć tego typu aplikacje tylko najprostszy sposób, który będzie działał (na początek Ci to wystarczy). Normalnie jednak nie tworzy sie połączenia do bazy w oknie aplikacji i nie wykonuje procedur z tego miejsca.

edytowany 2x, ostatnio: Progress
LJ
  • Rejestracja:ponad 7 lat
  • Ostatnio:około 7 lat
  • Postów:3
0

Dzięki działa, racja nie było lokalizacji.Progress, a mógł byś porzucić jakieś książki albo tutoriale(mogą być płatnę) na które warto zwrócić uwagę? Zaczynam moją przygodę z WPF, ten program który teraz robię będę wykorzystywał komercyjnie w własnym biznesie( jest to jednocześnie projekt na zaliczenie stąd konieczne połączenie z bazami), przeszukałem trochę internetu ale nie za bardzo wiem od czego zacząć. Z góry dzięki za pomoc.

Progress
  • Rejestracja:ponad 10 lat
  • Ostatnio:prawie 4 lata
  • Postów:220
0

Przede wszystkim poszukaj informacji o wzorcu MVVM i jego wykorzystaniu przy tworzeniu aplikacji WPF. Nie pamiętam już z czego ja się uczyłem, ale pewnie był to jakiś hinduski tutorial na youtube :D

Ten tutorial na pierwszy rzut oka wydaje się sensowny, ale nie oglądałem więc nie ręczę ;)

PS. Oczywiście to wszystko przy założeniu, że znasz C#, bo w przeciwnym razie musisz zacząć od nauki samego języka.

edytowany 2x, ostatnio: Progress
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)