[C#] Stored Procedure Parameter probleem

Pagina: 1
Acties:

  • Kelfox
  • Registratie: Januari 2002
  • Laatst online: 10-05-2023
Beste mede devvers,

Ik zit met een probleem. Ik probeer zo nauwkeurig mogelijk mijn probleem uit te leggen.

Ik heb een sql-server waar ik een postcode database op heb draaien. Het is de bedoeling dat ik de straat, plaats en kengetal uit de database haal a.d.h.v de postcode.

Database ontwerp:
Afbeeldingslocatie: http://img444.imageshack.us/img444/1929/databasedg1.jpg

Stored Procedure:
code:
1
2
3
4
5
6
7
CREATE PROCEDURE CheckPostcode

@sPostcode  nvarchar

AS

SELECT straat, plaats, kengetal FROM postcode WHERE postcode = @sPostcode


Die is aangemaakt, zonder fouten etc.

Mij code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
SqlConnection ConnectiePostcode = new SqlConnection("Initial Catalog=Postcode;Data Source=ipnr;user id=user;password=passwd");

SqlCommand Commando = new SqlCommand("CheckPostcode", ConnectiePostcode);
Commando.CommandType = CommandType.StoredProcedure;
Commando.Parameters.Add("@sPostcode", SqlDbType.NVarChar).Value = "1000ad";
ConnectiePostcode.Open();
SqlDataReader DataReader = Commando.ExecuteReader(CommandBehavior.CloseConnection);
while (DataReader.Read())
            {
                MessageBox.Show(DataReader["straat"].ToString());
                MessageBox.Show(DataReader["straat"].ToString());
                MessageBox.Show(DataReader["straat"].ToString());
            }
ConnectiePostcode.Close();


Het probleem is dat ik niks in de datareader krijg, dus ook niks in de pop-up venstertjes. Als ik de stored procedure aanpas, en daar direct in zet:
code:
1
2
3
4
5
6
7
CREATE PROCEDURE CheckPostcode

@sPostcode  nvarchar

AS

SELECT straat, plaats, kengetal FROM postcode WHERE postcode = '1000ad';


Dan krijg ik gewoon netjes de bijbehorende straat in een pop-up venstertje.

In de database gaat het ook om en NVarChar.

Voor mij een raadsel waarom dit niet werkt. Iemand die m'n fout ziet?

Oja, de 1000ad is een bestaande postcode in de database, waarvoor dus een straat/plaats/kengetal bij hoort.

  • xos
  • Registratie: Januari 2002
  • Laatst online: 25-11 17:08

xos

Ik weet niet of dit zo kan?

code:
1
Commando.Parameters.Add("@sPostcode", SqlDbType.NVarChar).Value = "1000ad";

Maak eens een parameter aan en zet de waarde hiervan voordat je hem toevoegd.

code:
1
2
3
SqlParameter p = new SqlParameter(...);
p.value = '100ad';
command.Parameters.Add(p);

  • Kelfox
  • Registratie: Januari 2002
  • Laatst online: 10-05-2023
Visual Studio 2005 biedt wel de mogelijkheid om dat zo te gebruiken als ik gedaan heb.

Ik heb jouw idee getest, maar dan krijg ik bij:

code:
1
[s]SqlDataReader DataReader = Commando.ExecuteReader(CommandBehavior.CloseConnection);[/s]

De volgende fout:

code:
1
[s]Procedure of Function 'CheckPostcode' expects parameter '@sPostcode', which was not supplied.[/s]


Sorry, had de naam/dbtype niet opgegeven. Als ik dit doe, dan heb ik dus hetzelfde probleem als ik al had.

[ Voor 14% gewijzigd door Kelfox op 12-02-2007 23:51 ]


  • DoDo
  • Registratie: Juli 2001
  • Laatst online: 01-12 21:38
Waarschijnlijk heb je geen lengte opgegeven van de nvarchar parameter

code:
1
2
3
4
5
6
7
CREATE PROCEDURE CheckPostcode

@sPostcode    nvarchar(6)

AS

SELECT straat, plaats, kengetal FROM postcode WHERE postcode @sPostcode


Als je geen lengte op geeft, pakt hij automatisch de lengte van 1, en daar past je postcode natuurlijk niet in :)

  • Kelfox
  • Registratie: Januari 2002
  • Laatst online: 10-05-2023
DoDo bedankt! Dit heeft geholpen :)