2008-11-13 8 views
0

Je suis en train de passer une valeur nulle pour le premier paramètre dans le code ci-dessous, mais MySQL se plaint queComment passer le paramètre MySQL null sur DbCommand Enterprise Library

 
Incorrect number of arguments for PROCEDURE myProc; expected 2, got 1 

Quand j'appelle manuellement la procédure avec le premier argument est nul, cela fonctionne, mais quand EmptyAsNullStartsWith(employeeNumberText.Text) renvoie null, il se plaint.

Database db = DatabaseFactory.CreateDatabase(
    ConfigurationManager.AppSettings["dbType"] 
); 
DbCommand cmd = db.GetStoredProcCommand("staff_listforinquiry"); 
db.AddeParameter(
    cmd, 
    "in_employeeNumber", 
    DbType.String, 
    EmptyAsNullStartsWith(employeeNumberText.Text) 
); 
db.AddeParameter(
    cmd, 
    "in_name", 
    DbType.String, 
    EmptyAsNullContains(employeeNameText.Text) 
); 

Répondre

2

Avez-vous essayé d'avoir EmptyAsNullContains (employeeNameText.Text) retour DBNull au lieu de null régulière?

+0

Cela fonctionne maintenant, avec juste un null standard. Je soupçonne que quelque chose était caché quelque part. – ProfK

0
if(employeeNumberText.Text != "") 
     db.AddInParameter(dbCommand, "in_employeeNumber", DbType.String, employeeNumberText.Text); 
else 
     db.AddInParameter(dbCommand, "in_employeeNumber", DbType.String, DBNull.Value); 
+1

Ce serait encore mieux si vous expliquiez le code que vous avez posté. –

Questions connexes