begin process at 2010 02 09 23:52:00
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C#

 > 

Base de données

 > 

Access

 > 

problème contrainte AllowDBNull/provider Oledb


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

problème contrainte AllowDBNull/provider Oledb

lundi 4 août 2008 à 10:51:00 | problème contrainte AllowDBNull/provider Oledb

solons


Bonjour,

Je cherche à pouvoir fabriquer un script générant une base SQL serveur identique à une base de départ qui doit pouvoir être de plusieurs formats (SQL serveur, Access ou excel).Seulement je n'y connais rien (c'est pour un stage) et je ne connais ni le C# ni quoi que ce soit sur les bases de donées. Je me suis donc tapper le site de microsoft pendant une semaine et je me suis servi de la très bonne source qui a été déja proposée à cet effet que vous trouverez au bout de ce lien.

Cette proposition est assez complètes mais contient quelques bugs pours lequels je n'arrive pas à trouver de solutions et pour lesquels je solicite votre aide.

Lorsque l'on génère un script sql serveur à partir d'une base access, le champs " AllowDBNull" est mal renseigné.
L'idée est que l'on crée une DATATABLE à partir de laquelle on reconstruit le script permettant de généré chaque table en parcourant la DATATABLE crée.

On utilise pour cela la commande :

oDataTableTables = oOleDbConnection.GetSchema("tables");

Pour remplir les propriétés des différentes colones on utilise le code suivant:

oOleDbDataReader = new System.Data.OleDb.OleDbCommand("SELECT * FROM [" + sCurrentTable + "]", oOleDbConnection).ExecuteReader(System.Data.CommandBehavior.KeyInfo);
                        oDataTableInfosTable = oOleDbDataReader.GetSchemaTable();

                        foreach (System.Data.DataRow oDataRow in oDataTableInfosTable.Rows)
                        {
                            BObject.Column oColumn;
                            oColumn=new NET2CsExportData.BObject.Column();

                            oColumn.ColumnName = oDataRow["ColumnName"].ToString();
                          
                            oColumn.Type = this.SetDataType(oDataRow["DataType"].ToString());

                            if (oColumn.Type == "char(250)")
                            {
                                if (Convert.ToInt32(oDataRow["ColumnSize"]) > 255)
                                {
                                    oColumn.Type = "text";
                                }
                                else
                                {
                                    oColumn.Type = "char(" + Convert.ToString(oDataRow["ColumnSize"]) + ")";
                                }
                            }
                            if (Convert.ToBoolean(oDataRow["AllowDBNull"]) )
                            {
                                oColumn.isAllowDbNull = true;
                            }
                            if (Convert.ToBoolean(oDataRow["IsKey"]))
                            {
                                oColumn.isPrimaryKey = true;
                            }
                                           
                            oTable.Columns.Add(oColumn);
                        }
                        oOleDbDataReader.Close();
                        oTable.Rows = this.GetDataOfTable(oTable);
                        oTables.Add(oTable);

Quand on analyse en detail le DataRow, on se rend compte que celui-ci n'a pas les propriétés qu'il devrait avoir. En effet si la colone sur laquelle il travaille et une clé primaire, il le voit et la propriété est à "true",de même la propiété "allowDBNull"est à "false". Dans tous les autre cas enviseageables, la propiété "allowDBNull" est à "true" ce qui pose donc un gros problème. Puisque du coup le résultat est inutilisable.

A mon avis le problème vient de la méthode "oOleDbDataReader.GetSchemaTable()", mais je peux me tromper..

Ma question est donc autant "est ce que vous savez comment résoudre le problème" que "est ce qu'il existe une façon de faire la mème chose sans se servir du provider oledb (récupérer les tables sys dans access par ex)"

Il y a un autre problème pour ceux qui peut etre connaitrait la source.. Les Foreign key ne sont pas bien mise en place et il y a des doublons qui rendent le script inutilisable sans l'avoir retravailler à la main ce qui lui fait grandement perdre de son interet .. Mais je n'ai pas encore identifier le problème donc je reposerai une question en temps voulu.

D'avance merci.



Cette discussion est classée dans : problème, oledb, ocolumn, odatarow, allowdbnull


Répondre à ce message

Sujets en rapport avec ce message

Problème d'accentuation avec les sockets [ par tiborg ] Bonjour,Je suis actuellement à la recherche d'un exemple simple de chat. Et à chaque fois que j'essaie une source ou que je la programme j'ai un probl changement de form après un click [ par BadFox ] salut,mon problème est que j'ai une form avec un bouton où lorsque je clique dessus, je voudrais changer tout ce qu'il y a sur cette form mais en la g dataGrid problème [ par pjerier ] bonjour à tous, je voudrais ecrire dans l'en-tête d'une ligne d'une dataGrid -> si quelqu'un peut m'aider..Merci d'avance !! Le language utilisé est l datagrid et bouton radio... [ par titou65 ] Bonjour,Je bosse sur un datarid en mode Web...je pense que pour une window form mon problème aurait la même solution.J'ai donc un datagrid qui m'affic problème avec des ListeView (C#) [ par Zaecken ] Je n'arrive pas à afficher les SubItem. je fais: ListViewItem liste = new ListViewItem(new string[]{"aa" , "bb" , "cc"}); lv.Items.Add(liste); (lv est System.Net.SocketPermission... [ par houseclubber ] J'ai un problème. J'ai testé une source de ce site qui fait un client serveur multi telnet qui fonctionne chez moi, mais pas à mon école...Voici l'err problème de guillemets [ par lpoinsot ] J'ai un petit problème je cherche à mettre des guillemets dans un chaine de caractère...par exempleChaine = ""mais ça marche po, même en mettant 2" av Problème d'Upload de fichier Image [ par pchanet ] Bonjour à tous,J'ai un problème avec le code de téléchargement d'une image. Lorsque j'active le téléchargement, une erreur s'affiche :->> "La référenc problème avec dll [ par pipicaca ] Bonjour!Voila je dois faire une application en C# utilisant des dll écrites en C. Les fonctions de ces dll ont en paramètres d'entrée/sortie des struc ?Gros problème avec dll [ par pipicaca ] Bonsoir,Voila je dois utiliser une dll écrite en C dans un programme écrit en C#. COmment faire??? Les fonctions contenues dans la dll et que je dois


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,234 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales