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

            metaData.Columns.Add("TABLE_CATALOG", Type.GetType("System.String"));
            metaData.Columns.Add("TABLE_NAME", Type.GetType("System.String"));
            metaData.Columns.Add("INDEX_CATALOG", Type.GetType("System.String"));
            metaData.Columns.Add("INDEX_NAME", Type.GetType("System.String"));
            metaData.Columns.Add("UNIQUE", Type.GetType("System.Boolean"));
            metaData.Columns.Add("COLLATION", Type.GetType("System.Int16"));
            metaData.Columns.Add("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[] indexes = new string[0];
                table.EnumIndexes(out indexes);

                bool   active;
                int    orderIndex;
                bool   unique;
                bool   primary;
                bool   descending;
                string keyExp;

                if (indexes != null)
                {
                    foreach (string index in indexes)
                    {
                        table.GetIndex(index, out active, out orderIndex, out unique, out primary, out descending, out keyExp);

                        if (orderIndex != 0)                        // && keyExp != "PrimaryKey" && keyExp != "PRIMARY_KEY")
                        {
                            if (keyExp != null && keyExp != string.Empty)
                            {
                                string[] columns = keyExp.Split(new char[] { ';' });

                                foreach (string colName in columns)
                                {
                                    metaData.Rows.Add(new object[]
                                    {
                                        databaseName,
                                        tableName,
                                        databaseName,
                                        index,
                                        unique,
                                        descending ? 2 : 1,
                                        colName
                                    });
                                }
                            }
                        }
                    }
                }

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

            return(metaData);
        }
Exemplo n.º 2
0
		public DataTable LoadIndexes(string cn, string databaseName, string tableName)
		{
			DataTable metaData = new DataTable();
			metaData.Columns.Add("TABLE_CATALOG", Type.GetType("System.String"));
			metaData.Columns.Add("TABLE_NAME", Type.GetType("System.String"));
			metaData.Columns.Add("INDEX_CATALOG", Type.GetType("System.String"));
			metaData.Columns.Add("INDEX_NAME", Type.GetType("System.String"));
			metaData.Columns.Add("UNIQUE", Type.GetType("System.Boolean"));
			metaData.Columns.Add("COLLATION", Type.GetType("System.Int16"));
			metaData.Columns.Add("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[] indexes = new string[0];
				table.EnumIndexes(out indexes);

				bool active;
				int orderIndex;
				bool unique;
				bool primary;
				bool descending;
				string keyExp;

				if(indexes != null)
				{
					foreach(string index in indexes)
					{
						table.GetIndex(index, out active, out orderIndex, out unique, out primary, out descending, out keyExp);

						if(orderIndex != 0) // && keyExp != "PrimaryKey" && keyExp != "PRIMARY_KEY")
						{
							if(keyExp != null && keyExp != string.Empty)
							{
								string[] columns = keyExp.Split(new char[] { ';' } );

								foreach(string colName in columns)
								{
									metaData.Rows.Add(new object[] 
								{ 
									databaseName,
									tableName, 
									databaseName, 
									index,
									unique,
									descending ? 2 : 1,
									colName
								} );
								}
							}
						}
					}
				}

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

			return metaData;
		}