static internal List <SqlSchemaInfo> GetSchemaInfo(System.Data.Odbc.OdbcConnection con, List <SqlSchemaInfo> schemaList) { try { DataTable tbl = con.GetSchema(System.Data.Odbc.OdbcMetaDataCollectionNames.Tables); foreach (DataRow row in tbl.Rows) { SqlSchemaInfo ssi = new SqlSchemaInfo(); ssi.Type = "TABLE"; ssi.Name = (string)row["table_name"]; schemaList.Add(ssi); } tbl = con.GetSchema(System.Data.Odbc.OdbcMetaDataCollectionNames.Views); foreach (DataRow row in tbl.Rows) { SqlSchemaInfo ssi = new SqlSchemaInfo(); ssi.Type = "VIEW"; ssi.Name = (string)row["table_name"]; schemaList.Add(ssi); } } catch { } return(schemaList); }
static internal List<SqlSchemaInfo> GetSchemaInfo(System.Data.Odbc.OdbcConnection con, List<SqlSchemaInfo> schemaList) { try { DataTable tbl = con.GetSchema(System.Data.Odbc.OdbcMetaDataCollectionNames.Tables); foreach (DataRow row in tbl.Rows) { SqlSchemaInfo ssi = new SqlSchemaInfo(); ssi.Type = "TABLE"; ssi.Name = (string)row["table_name"]; schemaList.Add(ssi); } tbl = con.GetSchema(System.Data.Odbc.OdbcMetaDataCollectionNames.Views); foreach (DataRow row in tbl.Rows) { SqlSchemaInfo ssi = new SqlSchemaInfo(); ssi.Type = "VIEW"; ssi.Name = (string)row["table_name"]; schemaList.Add(ssi); } } catch { } return schemaList; }
static internal List<SqlSchemaInfo> GetSchemaInfo(string dataProvider, string connection) { List<SqlSchemaInfo> schemaList = new List<SqlSchemaInfo>(); IDbConnection cnSQL = null; IDbCommand cmSQL = null; IDataReader dr = null; Cursor saveCursor = Cursor.Current; Cursor.Current = Cursors.WaitCursor; // Get the schema information try { int ID_TABLE = 0; int ID_TYPE = 1; // Open up a connection cnSQL = RdlEngineConfig.GetConnection(dataProvider, connection); if (cnSQL == null) { MessageBox.Show(string.Format("Unable to connect using dataProvider '{0}'",dataProvider), "SQL Error"); return schemaList; } cnSQL.Open(); // Take advantage of .Net metadata if available if (cnSQL is System.Data.SqlClient.SqlConnection) return GetSchemaInfo((System.Data.SqlClient.SqlConnection) cnSQL, schemaList); if (cnSQL is System.Data.Odbc.OdbcConnection) return GetSchemaInfo((System.Data.Odbc.OdbcConnection)cnSQL, schemaList); if (cnSQL is System.Data.OleDb.OleDbConnection) return GetSchemaInfo((System.Data.OleDb.OleDbConnection)cnSQL, schemaList); // Obtain the query needed to get table/view list string sql = RdlEngineConfig.GetTableSelect(dataProvider, cnSQL); if (sql == null || sql.Length == 0) // when no query string; no meta information available return schemaList; // Obtain the query needed to get table/view list cmSQL = cnSQL.CreateCommand(); cmSQL.CommandText = sql; dr = cmSQL.ExecuteReader(); string type = "TABLE"; while (dr.Read()) { SqlSchemaInfo ssi = new SqlSchemaInfo(); if (ID_TYPE >= 0 && dr.FieldCount < ID_TYPE && (string) dr[ID_TYPE] == "VIEW") type = "VIEW"; ssi.Type = type; ssi.Name = (string) dr[ID_TABLE]; schemaList.Add(ssi); } } catch (SqlException sqle) { MessageBox.Show(sqle.Message, "SQL Error"); } catch (Exception e) { MessageBox.Show(e.InnerException == null? e.Message: e.InnerException.Message, "Error"); } finally { if (cnSQL != null) { cnSQL.Close(); if (cmSQL != null) { cmSQL.Dispose(); } if (dr != null) dr.Close(); } Cursor.Current=saveCursor; } return schemaList; }
static internal List <SqlSchemaInfo> GetSchemaInfo(string dataProvider, string connection) { List <SqlSchemaInfo> schemaList = new List <SqlSchemaInfo>(); IDbConnection cnSQL = null; IDbCommand cmSQL = null; IDataReader dr = null; Cursor saveCursor = Cursor.Current; Cursor.Current = Cursors.WaitCursor; // Get the schema information try { int ID_TABLE = 0; int ID_TYPE = 1; // Open up a connection cnSQL = RdlEngineConfig.GetConnection(dataProvider, connection); if (cnSQL == null) { MessageBox.Show(string.Format("Unable to connect using dataProvider '{0}'", dataProvider), "SQL Error"); return(schemaList); } cnSQL.Open(); // Take advantage of .Net metadata if available if (cnSQL is System.Data.SqlClient.SqlConnection) { return(GetSchemaInfo((System.Data.SqlClient.SqlConnection)cnSQL, schemaList)); } if (cnSQL is System.Data.Odbc.OdbcConnection) { return(GetSchemaInfo((System.Data.Odbc.OdbcConnection)cnSQL, schemaList)); } if (cnSQL is System.Data.OleDb.OleDbConnection) { return(GetSchemaInfo((System.Data.OleDb.OleDbConnection)cnSQL, schemaList)); } // Obtain the query needed to get table/view list string sql = RdlEngineConfig.GetTableSelect(dataProvider, cnSQL); if (sql == null || sql.Length == 0) // when no query string; no meta information available { return(schemaList); } // Obtain the query needed to get table/view list cmSQL = cnSQL.CreateCommand(); cmSQL.CommandText = sql; dr = cmSQL.ExecuteReader(); string type = "TABLE"; while (dr.Read()) { SqlSchemaInfo ssi = new SqlSchemaInfo(); if (ID_TYPE >= 0 && dr.FieldCount < ID_TYPE && (string)dr[ID_TYPE] == "VIEW") { type = "VIEW"; } ssi.Type = type; ssi.Name = (string)dr[ID_TABLE]; schemaList.Add(ssi); } } catch (SqlException sqle) { MessageBox.Show(sqle.Message, "SQL Error"); } catch (Exception e) { MessageBox.Show(e.InnerException == null? e.Message: e.InnerException.Message, "Error"); } finally { if (cnSQL != null) { cnSQL.Close(); if (cmSQL != null) { cmSQL.Dispose(); } if (dr != null) { dr.Close(); } } Cursor.Current = saveCursor; } return(schemaList); }