Comment passer en paramètre ODBC un champ de type datetime qui soit null ?

cs_benol Messages postés 4 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 16 juin 2005 - 16 juin 2005 à 14:26
cs_benol Messages postés 4 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 16 juin 2005 - 16 juin 2005 à 15:22
Bonjour,



Je cherche à passer en paramètre ODBC un champ datetime de type NULL

J'ai essayé plusieurs choses du style:

(DBNull)Null

ou bien

string = "NULL";



mais bien que tout se passe correctement au moment du passage de
paramètre pour du SQL Server 2000 chez Oracle c'est une autre histoire.
L'intérêt d'utiliser des paramètres ODBC étant de pouvoir switcher
entre les différentes bases de données sans avoir à coder différement
bien sur.



Si quelqu'un a déja eut ce problème. Please help !!!!



Merci d'avance



Ben
A voir également:

6 réponses

sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 37
16 juin 2005 à 14:49
essaye avec
OracleDateTime
.Null


<HR>
Sébastien FERRAND

Blog : http://blogs.developpeur.org/sebmafate
0
SharpMao Messages postés 1024 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 7 juin 2010 69
16 juin 2005 à 15:05
Hello,
Le plus simple, c'est de passer l'objet System.DBNull.Value.
Ca fonctionne avec toutes les bases de donneés que j'ai pu tester.

Amicalement, SharpMao
0
cs_benol Messages postés 4 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 16 juin 2005
16 juin 2005 à 15:12
En fait c'est exactement ce que je ne peux pas faire!

Car il faut que ma requête soit compatible entre différents système de base de donnée d'ou le passage de paramètre en ODBC.

J'ai une solution qui marche mais que je ne trouve pas propre qui
consiste à concaténer en string si ma date est nulle et sinon de passer
un objet datetime dans l'autre cas.

Mais bon c'est étonnant que ODBC n'est pas prévu un paramètre de date Null qu'on puisse passer.
0
SharpMao Messages postés 1024 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 7 juin 2010 69
16 juin 2005 à 15:17
Et chez toi, ça ne marche pas avec System.DBNull.Value ?
C'est en principe un objet qui permet justement de passer un paramètre null à n'importe quelle DB.

Amicalement, SharpMao
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_benol Messages postés 4 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 16 juin 2005
16 juin 2005 à 15:21
Voila exactement ce que je fais:



public int GWS_ExecuteNonQueryODBC (string ConnString, string SQL, params object[] args)

{

int r;

OdbcParameter p = null;

int i;

try

{

System.Data.Odbc.OdbcConnection myConnection =


new
System.Data.Odbc.OdbcConnection(ConnString);


System.Data.Odbc.OdbcCommand myCommand = new
System.Data.Odbc.OdbcCommand (SQL, myConnection);

myCommand.CommandType = CommandType.Text;

if(args != null)

// C'est la que je gère le NULL du coup en gros
j'envoie un tableau de paramètre null si je veux passer



//des paramètres nuls

{


for (i = 0; i < args.Length;
i++)

{


if ( args[i]
is Int32)



p = new OdbcParameter ("p"+i.ToString(),
System.Data.Odbc.OdbcType.Int);

else if ( args[i] is DateTime)



p = new OdbcParameter ("p"+i.ToString(),
System.Data.Odbc.OdbcType.DateTime);

else if ( args[i] is String)



p = new OdbcParameter ("p"+i.ToString(),
System.Data.Odbc.OdbcType.Char);


else if (
args[i] is Double)



p = new OdbcParameter ("p"+i.ToString(),
System.Data.Odbc.OdbcType.Double);


p.Value =
args[i];



myCommand.Parameters.Add (p);

}

}

myConnection.Open();

r = myCommand.ExecuteNonQuery();

myConnection.Close();

}

catch (Exception ex)

{


ClTraceEvt.WriteEvt ("Exception: {0}\n{1}\n{2}",
EventLogEntryType.Error, ex.Message, ex.Source, ex.StackTrace);

r = -1;

}

return r;

}
0
cs_benol Messages postés 4 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 16 juin 2005
16 juin 2005 à 15:22
hors dans ce cas là, l'odbcparameter n'accepte pas le type System.DBNull.Value
0
Rejoignez-nous