Could not find stored procedure '...'

Could not find stored procedure '...'
LJ
  • Rejestracja:ponad 7 lat
  • Ostatnio:ponad 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:ponad 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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.