J'ai une classe comme indiqué ci-dessous qui a une table correspondante dans Access 2007Comment vérifier null dans les requêtes paramétrées?
Class Product
{
public int ProductId
{
get;set;
}
public string ProductName
{
get;set;
}
public string ProductColor
{
get;set;
}
}
c'est la méthode que j'utilise pour ajouter des produits à base de données.
public static void AddProduct(Product product)
{
con.Open();
string strSql = @"INSERT INTO PRODUCTS (PRODUCTID,PRODUCTNAME,PRODUCTCOLOR)
VALUES(?,?,?)";
IDbCommand cmd = con.CreateCommand();
cmd.CommandText = strSql;
dh.AddInParam(cmd, "@productId", DbType.Int32, product.ProductId);
dh.AddInParam(cmd, "@productName", DbType.String, product.ProductName);
dh.AddInParam(cmd, "@productColor", DbType.String, product.ProductColor);
cmd.ExecuteNonQuery();
con.Close()
}
Maintenant, cela ne me dérange pas si l'utilisateur a entré des valeurs nulles. Dans ce cas, comment puis-je mettre à jour la méthode AddProduct? Le seul cas venir à mon esprit est en train de faire un chèque nul pour chaque paramètre comme ci-dessous ..
if(product.ProductColor = null)
{
dh.AddInParam(cmd, "@productColor", DbType.String, DbNull.Value);
}
else
{
dh.AddInParam(cmd, "@ProductColor, DbType.String, product.ProductColor)
}
Suis-je manque quelque chose évidente? Quelle serait la meilleure méthode pour vérifier les valeurs NULL dans ces requêtes paramétrées? Que diriez-vous d'utiliser l'opérateur de coalescence NULL?
oui le troisième paramètre est type..i d'objet a dû changer votre Soulution à Produit.IDProduit ?? (objet) DBNull.Value pour obtenir le travail .. il a montré 'Operator' ?? ' ne peut pas être appliqué aux opérandes de type 'string' et 'System.DBNull' 'en premier .. – vinayan
Corrigé la réponse avec vos findigs. Merci- – Steve