Modifications sur une base de données Access

macnan Messages postés 13 Date d'inscription jeudi 24 novembre 2005 Statut Membre Dernière intervention 26 janvier 2007 - 15 janv. 2006 à 14:34
patheo Messages postés 40 Date d'inscription mercredi 17 janvier 2007 Statut Membre Dernière intervention 29 septembre 2014 - 26 juil. 2007 à 14:38
Bonjour, je poste ce topic parceque j'ai un problème à executer une "non-query" requête sur ma base de données access. J'arrive à en extraire des infos(dataAdapter + dataSet), mais pas à creer de table ou d'insérer des champs. Je ne comprend pas, tout semble pourtant correct... alors si quelqu'un peut m'aider... .
Mon Code :


OdbcConnection connection=
new OdbcConnection();

string connectionString = "DNS=MS Access Database";
connection.ConnectionString = connectionString;

string requete = "
CREATE TABLE table (id int4, categorie varchar(64));";
OdbcCommand commande =
new OdbcCommand(requete, connection);
commande.ExecuteNonQuery();
//ici j'ai l'erreur : Une exception non gérée du type 'System.Data.Odbc.OdbcException' s'est
//produite dans system.data.dll

//Informations supplémentaires : Erreur système.

Merci d'avance..

17 réponses

cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
15 janv. 2006 à 14:45
Salut,

A mon avis :

OdbcCommand commande = new OdbcCommand(requete, connection);
connection.Open();
commande.ExecuteNonQuery();
...
connection.Close();

/*
coq
MVP Visual C#
*/
0
macnan Messages postés 13 Date d'inscription jeudi 24 novembre 2005 Statut Membre Dernière intervention 26 janvier 2007
15 janv. 2006 à 14:52
Heu...non, désolé, ça ne marche pas mieux... J'ai la même erreur même après avoir ouvert la connection après la création de la commande...
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
15 janv. 2006 à 15:07
"string connectionString = " DNS =MS Access Database";"
Du peu que je me souvienne du monde ODBC, il s'agit plutot de DSN (Data Source Name)

Sinon regarde aussi du côté des connexions DSN-less.

Un petit site bien pratique pour ce genre de chose : ConnectionStrings.com

/*
coq
MVP Visual C#
*/
0
macnan Messages postés 13 Date d'inscription jeudi 24 novembre 2005 Statut Membre Dernière intervention 26 janvier 2007
15 janv. 2006 à 15:30
Je me suis trompé dans le code que j'ai posté, j'ai bien "DSN" dans mon appli, désolé.
Sinon, du coté des connections sans DSN, j'ai eu aucun résultat, et toujours cette même erreur... De toute façons, je doit faire une application utilisant les DSN (pour permettre à l'utilisateur de changer le DSN)... Je suis donc re-bloqué...
0

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

Posez votre question
Homerrrrr Messages postés 22 Date d'inscription mercredi 23 novembre 2005 Statut Membre Dernière intervention 22 février 2006
15 janv. 2006 à 15:38
Moi j'utiliserai un try catch autour de ton instruction pour avoir un message d'erreur plus clair.

Comme ceci :

OdbcConnection connection=
new OdbcConnection();

string connectionString = "DNS=MS Access Database";
connection.ConnectionString = connectionString;

string requete = "
CREATE TABLE table (id int4, categorie varchar(64));";
OdbcCommand commande =
new OdbcCommand(requete, connection);

try{
connection.open();
commande.ExecuteNonQuery();
}
catch(Exception e)
{
MessageBox.Show(e.Message);
}

Et on se rend compte que ton erreur vient de ta ligne connection.open().
Et on obtient : "Source de données introuvable et nom de pilote non spécifié".
Il reste à plancher là dessus...
0
Homerrrrr Messages postés 22 Date d'inscription mercredi 23 novembre 2005 Statut Membre Dernière intervention 22 février 2006
15 janv. 2006 à 15:41
Autant pour moi, en mettant DSN on a l'erreur "Echec SQLSetConnectAttr du pilote".

Késako ?

Y'aurai pas quelque chose à paramétrer dans le panneau de configurations, Outils d'administration, Source de données (ODBC)....?
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
15 janv. 2006 à 15:42
Oui ce message là chez toi c'est normal si tu n'as pas définie la source de données ODBC sur ton système.

/*
coq
MVP Visual C#
*/
0
macnan Messages postés 13 Date d'inscription jeudi 24 novembre 2005 Statut Membre Dernière intervention 26 janvier 2007
15 janv. 2006 à 15:47
Oups...désolé pr le dernier post, c une erreur....(c ma signature)
C'était juste pour dire que tu peux configurer ton "alias" entre DSN et Base de données dans le panneau de configuration->Outils d'administration->Sources de données (ODBC)
Merci en tt cas de vous pencher sur mon problème...
0
Homerrrrr Messages postés 22 Date d'inscription mercredi 23 novembre 2005 Statut Membre Dernière intervention 22 février 2006
15 janv. 2006 à 15:47
Tout à fait coq, maintenant que c'est paramêtré, j'obtiens l'erreur "Erreur de syntaxe dans l'instruction CREATE TABLE".

Ca se précise...!?
0
macnan Messages postés 13 Date d'inscription jeudi 24 novembre 2005 Statut Membre Dernière intervention 26 janvier 2007
15 janv. 2006 à 15:50
"Y'aurai pas quelque chose à paramétrer dans le panneau de configurations, Outils d'administration, Source de données (ODBC)....?"
ok, alors visiblement je suis à l'ouest , désolé homerrrrr , il faut que dans l'onglet "sources de données utilisateur" tu cliques sur "ajouter", tu choisis ton type de base (ici "Access (*.mdb)" et tu lui attribut un DSN, que tu peu rappeler dans ton prog ("DSN=monDSN")..voilà...
0
macnan Messages postés 13 Date d'inscription jeudi 24 novembre 2005 Statut Membre Dernière intervention 26 janvier 2007
15 janv. 2006 à 15:51
OK...j'ai un train de retard...
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
15 janv. 2006 à 16:03
Ah oui exact Homerrrrr je n'avais pas trop vérifier la requête en elle même.
Logiquement "table" est un mot réservé, c'est donc peut être le nom qui pose problème.

/*
coq
MVP Visual C#
*/
0
macnan Messages postés 13 Date d'inscription jeudi 24 novembre 2005 Statut Membre Dernière intervention 26 janvier 2007
15 janv. 2006 à 16:27
Apparemment, ce n'est pas ça. J'ai déjà essayé avec d'autres noms de table sans succès...

//I love geeks
0
cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
15 janv. 2006 à 17:18
Ok mais visiblement l'erreur est dans la requête quand même.
Une piste : je te laisse dégainer la doc d'Access afin de vérifier la prise en charge du type "varchar". (ce ne serais pas plutot "text" ?)

/*
coq
MVP Visual C#
*/
0
Homerrrrr Messages postés 22 Date d'inscription mercredi 23 novembre 2005 Statut Membre Dernière intervention 22 février 2006
15 janv. 2006 à 18:49
Bon voilà une syntaxe qui fonctionne :

string requete = "CREATE TABLE t (id integer, categorie varchar(64));";

En gros, tu ne peux pas créer une table appelée "table" et tu ne peux définir une longueur pour ton champ de type INTEGER.

Voilà !
0
macnan Messages postés 13 Date d'inscription jeudi 24 novembre 2005 Statut Membre Dernière intervention 26 janvier 2007
15 janv. 2006 à 19:25
Merci!!!! En fait, je cherchai un problème du coté C# ou SQL alors ke c'était un problème Access... Enfin bref, merci d'avoir passé du tps pr me sortir de là...

//I love geeks
0
patheo Messages postés 40 Date d'inscription mercredi 17 janvier 2007 Statut Membre Dernière intervention 29 septembre 2014
26 juil. 2007 à 14:38
Bonjour! j'ai créer une base de données sous Access et je souhaitait créer une inerface de connection par laquelle les utilisateurs pourront accéder à la base de données en entrant leur compte utilisateur et leur mot de passe. Puis-je avoir un exemple de code.
Merci d'avence!
0
Rejoignez-nous