Exemplo n.º 1
0
        public DataTable LoadForeignKeys(string cn, string databaseName, string tableName)
        {
            DataTable metaData = new DataTable();

            metaData.Columns.Add("PK_TABLE_CATALOG", Type.GetType("System.String"));
            metaData.Columns.Add("PK_TABLE_SCHEMA", Type.GetType("System.String"));
            metaData.Columns.Add("FK_TABLE_CATALOG", Type.GetType("System.String"));
            metaData.Columns.Add("FK_TABLE_SCHEMA", Type.GetType("System.String"));
            metaData.Columns.Add("FK_TABLE_NAME", Type.GetType("System.String"));
            metaData.Columns.Add("PK_TABLE_NAME", Type.GetType("System.String"));
            metaData.Columns.Add("ORDINAL", Type.GetType("System.Int32"));
            metaData.Columns.Add("FK_NAME", Type.GetType("System.String"));
            metaData.Columns.Add("PK_NAME", Type.GetType("System.String"));
            metaData.Columns.Add("PK_COLUMN_NAME", Type.GetType("System.String"));
            metaData.Columns.Add("FK_COLUMN_NAME", Type.GetType("System.String"));

            try
            {
                Provider.VistaDB.VistaDBDatabase db = OpenDatabase(cn);
                db.Connect();

                Provider.VistaDB.VistaDBTable table = new Provider.VistaDB.VistaDBTable(db, tableName);
                table.Open();

                string[] fkeys = new string[0];
                table.EnumForeignKeys(out fkeys);

                string foreignKey   = "";
                string primaryTable = "";
                string primaryKey   = "";

                if (fkeys != null)
                {
                    foreach (string fkey in fkeys)
                    {
                        table.GetForeignKey(fkey, out foreignKey, out primaryTable, out primaryKey);

                        string[] fColumns = foreignKey.Split(new char[] { ';' });
                        string[] pColumns = primaryKey.Split(new char[] { ';' });

                        for (int i = 0; i < fColumns.GetLength(0); i++)
                        {
                            metaData.Rows.Add(new object[]
                            {
                                databaseName,
                                DBNull.Value,
                                DBNull.Value,
                                DBNull.Value,
                                tableName,
                                primaryTable,
                                0,
                                fkey,
                                "PKEY",
                                pColumns[i],
                                fColumns[i]
                            }
                                              );
                        }
                    }

                    table.Close();
                    db.Close();
                }
            }
            catch {}

            return(metaData);
        }
Exemplo n.º 2
0
		public DataTable LoadForeignKeys(string cn, string databaseName, string tableName)
		{
			DataTable metaData = new DataTable();
			metaData.Columns.Add("PK_TABLE_CATALOG", Type.GetType("System.String"));
			metaData.Columns.Add("PK_TABLE_SCHEMA", Type.GetType("System.String"));
			metaData.Columns.Add("FK_TABLE_CATALOG", Type.GetType("System.String"));
			metaData.Columns.Add("FK_TABLE_SCHEMA", Type.GetType("System.String"));
			metaData.Columns.Add("FK_TABLE_NAME", Type.GetType("System.String"));
			metaData.Columns.Add("PK_TABLE_NAME", Type.GetType("System.String"));
			metaData.Columns.Add("ORDINAL", Type.GetType("System.Int32"));
			metaData.Columns.Add("FK_NAME", Type.GetType("System.String"));
			metaData.Columns.Add("PK_NAME", Type.GetType("System.String"));
			metaData.Columns.Add("PK_COLUMN_NAME", Type.GetType("System.String"));
			metaData.Columns.Add("FK_COLUMN_NAME", Type.GetType("System.String"));

			try
			{
				Provider.VistaDB.VistaDBDatabase db = OpenDatabase(cn);
				db.Connect();

				Provider.VistaDB.VistaDBTable table = new Provider.VistaDB.VistaDBTable(db, tableName);
				table.Open();

				string[] fkeys = new string[0];
				table.EnumForeignKeys(out fkeys);

				string foreignKey   = "";
				string primaryTable = "";
				string primaryKey   = "";

				if(fkeys != null)
				{
					foreach(string fkey in fkeys)
					{
						table.GetForeignKey(fkey, out foreignKey, out primaryTable, out primaryKey);

						string[] fColumns = foreignKey.Split(new char[] {';'});
						string[] pColumns = primaryKey.Split(new char[] {';'});

						for(int i = 0; i < fColumns.GetLength(0); i++)
						{
							metaData.Rows.Add(new object[] 
							{ 
								databaseName,
								DBNull.Value,
								DBNull.Value,
								DBNull.Value,
								tableName,
								primaryTable, 
								0,
								fkey,
								"PKEY",
								pColumns[i],
								fColumns[i]}
									);
							}
					}
		
					table.Close();
					db.Close();
				}
			}
			catch {}

			return metaData;
		}