2011-04-19 6 views
1

J'utilise postgresql pour la base de données. Et la condition sur le terrain n'est pas nulle. Lorsque l'utilisateur reste vide pour ce champ et appuie sur entrer son null donnant l'exception de pointeur parce que dans postgresql pour l'entier il n'acceptera pas accepter "" .Toute idée sur la façon de traiter ce caspostgresql gestion des valeurs nulles

+0

'Exception de pointeur nul'? Êtes-vous sûr que c'est exactement ce que vous obtenez? – Quassnoi

+0

Quel est votre environnement de développement? La langue? Couche de persistance? – Eelke

+0

Avant de demander comment éviter un problème, vous devriez vous demander "qu'est-ce que je m'attends à ce que mon système fasse dans ce cas"? (quand un champ entier est laissé vide dans un formulaire d'entrée). – leonbloy

Répondre

3

Étant donné que votre champ n'accepte pas NULL, vous devez le définir avec un entier réel.

Remplacez la chaîne vide par 0 (ou toute autre valeur par défaut) côté client.

+0

Pouvez-vous vérifier si je suis dans la bonne voie? Var abc = document.getElementById ('abc'). Value; if (abc == "") {abc.value = 0; } – tapps

+1

@divya: oui, quelque chose comme ça. Mais comme il s'agit de 'javascript' et qu'il peut être falsifié, vous devez également nettoyer toute entrée utilisateur dans votre couche db côté serveur. – Quassnoi

+0

ok, merci beaucoup pour votre aide – tapps

1

Vérifiez votre formulaire avec javascript, et si arrive a "" dans la zone de texte, attribuez simplement 0 à cette valeur. Puis passez cette valeur en tant que valeur Integer et c'est tout.

+0

Pouvez-vous vérifier si je suis dans la bonne voie? Var abc = document.getElementById ('abc'). Value; \t si ("". Est égal à (abc)) { \t \t abc.value = 0; \t} – tapps

+0

Oui, vous l'êtes. C'est quelque chose comme ça. – elvenbyte

4

Si vous pouvez modifier l'instruction INSERT, vous pouvez utiliser la fonction COALESCE() pour remplacer automatiquement une valeur NULL par une autre valeur que vous spécifiez.

Voici un exemple pour insérer automatiquement 0 (zéro) dans le champ d'état, lorsque la variable d'état de $ n'est pas défini:

INSERT INTO foo (name, status) VALUES ($name, COALESCE($status, 0)); 

La fonction COALESCE peut prendre un certain nombre d'arguments et renvoie le premier non -NULL valeur trouvée. Cela est pratique lorsque vous avez une "cascade" de valeurs que vous voulez essayer avant de régler la valeur par défaut. Par exemple:

COALESCE($status1, $status2, $status3, $status4, 0) 
+0

'COALESCE' sauvé ma journée. – jurgemaister