2009-03-06 8 views
0

Je suis en train d'ajouter dynamiquement une colonne à la table dans le code DB en utilisant la requête alter table. Mais je suis confronté à un problème quand j'essaie d'insérer des valeurs dans cette colonne. il lève une colonne d'exception qui n'existe pas. Et si je nettoyais et reconstruisais mon projet via netbeans, ça fonctionne bien. J'utilise java et mysql comme base de données.Problème lors de l'insertion de données dans une colonne créée dynamiquement de la table

Y at-il un organisme qui connaît la solution à ce problème?

Ce qui suit est mon alter table Code requête

 String alterTableQuery ="alter table `test` add `abc` varchar(50) NOT NULL default ''"; 
    stmt = conn.prepareStatement(alterTableQuery); 
    boolean val = stmt.execute(); 

Et je suis en train d'insérer des données en utilisant le code suivant.

 String sqlQuery = "insert into `test` (`id`,`abc`) values (?)" ; 
     stmt = conn.prepareStatement(sqlQuery); 
     boolean val = stmt.execute(); 
+0

Pouvez-vous publier vos instructions SQL? –

+0

Également afficher un "DESCRIBE

" de la table et pointez la colonne fautive, si possible. –

+0

avez-vous un exemple de votre code? – MatBailie

Répondre

0

Je ne sais pas sur Java mais .net après avoir effectué un changement sur une table, vous devez appeler dataAdapter.AcceptChanges(); ce qui engage essentiellement le changement à la table.

Dans votre codedo, vous devez effectuer un appel similaire après avoir ajouté la colonne à la table pour que l'insertion fonctionne.

0

Cela peut être dû au fait que les données Description La langue (DDL) est souvent exécutée en dehors des transactions. Peut-être un commit/rollback, ou même reconnecterait le problème. Juste une supposition.

1

Vous pourriez également repenser votre conception. En général, il est difficile pour l'interface utilisateur d'ajouter des colonnes aux tables. Peut-être avez-vous besoin d'un design plus normalisé. Les modifications structurelles de la base de données ne doivent pas provenir de l'utilisateur. Vous pourriez créer un vrai désordre si différents utilisateurs faisaient des changements en même temps. De plus, les utilisateurs ne devraient pas avoir les droits de sécurité pour ajouter des colonnes. C'est un risque majeur pour votre système.

Questions connexes