title image


Smiley VB.NET: SQL-Statement WHERE Parameter zu lang ?
Hallo an alle !



Dies ist mein erster Beitrag und ich werde mich bemühen mich in zukunft aktiv an der Beantwortung von Fragen zu beteiligen und auch mit den richtigen Informationen rüberzukommen. Eine kurze Erläuterung woran ich gerade arbeite:

In meinem Programm werden 3D-Konstruktionsdateien geladen und Bauteilinformationen ausgelesen, diese Bauteile stellen einen Artikel in einem Warenwirtschaftsprogramm dar welches auf einer SQL-Datenbank basiert. Abgeglichen werden diese über die Bauteil "ID". Diese sieht z.B. so aus B6C1EEDC-47ED-6CC7-CDB5-C795D3EC1F36

In der SQL-Datenbank in der Tabelle "Artikel" existiert ein Feld "AICode".

Wenn ein Bauteil geladen wird soll in der SQL-Datenbank nach der ID in dem Feld AICode gesucht werden zwecks Datenabgleich und genau hier liegt das Problem:



Für die Verbindung zum SQL-Server verwende ich ein Public SQLConnection Objekt (db_SQLFrame). Meiner Function wird die ID des Bauteils als Argument vom Typ String übergeben.



(der Übersicht halber habe ich nicht alle Zeilen eingefügt)



Private Function GetArtikelByID(ID as String) as Integer

Dim strSQL As String

Dim adp_Artikel As New SqlClient.SqlDataAdapter

Dim cmd_Get_Artikel As New SqlClient.SqlCommand



StrSQL = "SELECT Artikelnummer, Artikelbezeichnung, AICode FROM Artikel " & _

"Where AICode=" & ID '(ID-Wert z.B: B6C1EEDC-47ED-6CC7-CDB5-C795D3EC1F36)



cmd_Get_Artikel = new SqlClient.SqlCommand (StrSQL, db_SQLFrame)

cmd_Get_Artikel.ExecuteNonQuery



das Problem: Wenn Execute ausgeführt wird bleibt das Programm mit der Fehlermeldung:



->> Eine nicht behandelte Ausnahme des Typs 'System.Data.SqlClient.SqlException' ist in system.data.dll aufgetreten. Zusätzliche Informationen: Systemfehler. <<-



Wenn ich statt dem Argument ID die Zahl "12345" einfüge funktioniert das ! Es wird mir zwar als Ergebnis "0" zurückgegeben, das stimmt aber so weil der Artikel "12345" nicht existiert. Das Datenbankfeld hat die Eigenschaften VarChar/Größe 50. Die ID ist 36-Stellig und ist auch immer 36-stellig.



Ist die ID zu lang für die SQL-Abfrage ? Das kann doch nicht sein ????

Hat das vielleicht was mit den Indizes eines DB-Feldes zu tun?



Bin für jede Antwort dankbar !!!



mfg

Der_Michel

geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: