Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/mcs/class
diff options
context:
space:
mode:
authorKonstantin Triger <kostat@mono-cvs.ximian.com>2006-05-09 16:40:04 +0400
committerKonstantin Triger <kostat@mono-cvs.ximian.com>2006-05-09 16:40:04 +0400
commit598f80589cbb4f5322901fb776beb4a6cef1a773 (patch)
tree2d134db211fd57359ee331f1897d22b8021e41c4 /mcs/class
parent1f6fe9b2737ae9c86277da18e5823408fa8095a2 (diff)
fix GetOleDbSchemaTable for OleDbSchemaGuid.Tables
svn path=/branches/mainsoft/gh1.7/mcs/; revision=60440
Diffstat (limited to 'mcs/class')
-rw-r--r--mcs/class/System.Data/System.Data.OleDb.jvm/ChangeLog4
-rw-r--r--mcs/class/System.Data/System.Data.OleDb.jvm/OleDbConnection.cs92
-rw-r--r--mcs/class/System.Data/Test/ProviderTests/System.Data.OleDb.jvm/OleDbConnection/ChangeLog3
-rwxr-xr-xmcs/class/System.Data/Test/ProviderTests/System.Data.OleDb.jvm/OleDbConnection/OleDbConnection_GetOleDbSchemaTable.cs11
4 files changed, 71 insertions, 39 deletions
diff --git a/mcs/class/System.Data/System.Data.OleDb.jvm/ChangeLog b/mcs/class/System.Data/System.Data.OleDb.jvm/ChangeLog
index d169daafe56..e831ed122c2 100644
--- a/mcs/class/System.Data/System.Data.OleDb.jvm/ChangeLog
+++ b/mcs/class/System.Data/System.Data.OleDb.jvm/ChangeLog
@@ -1,3 +1,7 @@
+2006-05-09 Konstantin Triger <kostat@mainsoft.com>
+
+ * OleDbConnection.cs: fix GetOleDbSchemaTable for OleDbSchemaGuid.Tables.
+
2006-05-07 Boris Kirzner <borisk@mainsoft.com>
* OleDbConnection.cs: resolved ambigous reference.
diff --git a/mcs/class/System.Data/System.Data.OleDb.jvm/OleDbConnection.cs b/mcs/class/System.Data/System.Data.OleDb.jvm/OleDbConnection.cs
index 29f990549c2..48f764306fb 100644
--- a/mcs/class/System.Data/System.Data.OleDb.jvm/OleDbConnection.cs
+++ b/mcs/class/System.Data/System.Data.OleDb.jvm/OleDbConnection.cs
@@ -144,44 +144,64 @@ namespace System.Data.OleDb
public DataTable GetOleDbSchemaTable (Guid schema, object[] restrictions)
{
- DataTable schemaTable = new DataTable("Tables");
- schemaTable.Columns.Add("TABLE_CATALOG");
- schemaTable.Columns.Add("TABLE_SCHEMA");
- schemaTable.Columns.Add("TABLE_NAME");
- schemaTable.Columns.Add("TABLE_TYPE");
- schemaTable.Columns.Add("TABLE_GUID");
- schemaTable.Columns.Add("DESCRIPTION");
- schemaTable.Columns.Add("TABLE_PROPID");
- schemaTable.Columns.Add("DATE_CREATED");
- schemaTable.Columns.Add("DATE_MODIFIED");
-
-
- java.sql.Connection con = JdbcConnection;
- String catalog = con.getCatalog();
-
- java.sql.DatabaseMetaData meta = con.getMetaData();
- java.sql.ResultSet schemaRes = meta.getSchemas();
- System.Collections.ArrayList schemas = new System.Collections.ArrayList();
- while(schemaRes.next()) {
- schemas.Add(schemaRes.getString(1));
- }
- schemaRes.close();
-
- for(int i = 0; i < schemas.Count; i++) {
- java.sql.ResultSet tableRes = meta.getTables(catalog, schemas[i].ToString(), null, null);
- while(tableRes.next()) {
- DataRow row = schemaTable.NewRow();
- row["TABLE_CATALOG"] = catalog;
- row["TABLE_SCHEMA"] = schemas[i];
- row["TABLE_NAME"] = tableRes.getString("TABLE_NAME");
- row["TABLE_TYPE"] = tableRes.getString("TABLE_TYPE");
- row["DESCRIPTION"] = tableRes.getString("REMARKS");
-
- schemaTable.Rows.Add(row);
+ if (State != ConnectionState.Open)
+ throw ExceptionHelper.ConnectionNotOpened("GetOleDbSchemaTable", State.ToString());
+
+ try {
+
+ string[] fixedRestrictions = new string[4];
+ if (restrictions != null) {
+ if (restrictions.Length > 4)
+ throw new OleDbException("The parameter is incorrect", null, this);
+
+ for (int i = 0, count = restrictions.Length; i < count; i ++) {
+ if (restrictions[i] != null) {
+ if (!(restrictions[i] is string))
+ throw new OleDbException("The parameter is incorrect", null, this);
+
+ fixedRestrictions[i] = (string)restrictions[i];
+ }
+ }
}
- tableRes.close();
+
+ DataTable schemaTable = new DataTable("Tables");
+ schemaTable.Columns.Add("TABLE_CATALOG");
+ schemaTable.Columns.Add("TABLE_SCHEMA");
+ schemaTable.Columns.Add("TABLE_NAME");
+ schemaTable.Columns.Add("TABLE_TYPE");
+ schemaTable.Columns.Add("TABLE_GUID");
+ schemaTable.Columns.Add("DESCRIPTION");
+ schemaTable.Columns.Add("TABLE_PROPID");
+ schemaTable.Columns.Add("DATE_CREATED");
+ schemaTable.Columns.Add("DATE_MODIFIED");
+
+ java.sql.ResultSet tableRes = JdbcConnection.getMetaData().getTables(
+ fixedRestrictions[0],
+ fixedRestrictions[1],
+ fixedRestrictions[2],
+ new string[]{fixedRestrictions[3]});
+
+ try {
+ while(tableRes.next()) {
+ DataRow row = schemaTable.NewRow();
+ row["TABLE_CATALOG"] = tableRes.getString("TABLE_CAT");
+ row["TABLE_SCHEMA"] = tableRes.getString("TABLE_SCHEM");
+ row["TABLE_NAME"] = tableRes.getString("TABLE_NAME");
+ row["TABLE_TYPE"] = tableRes.getString("TABLE_TYPE");
+ row["DESCRIPTION"] = tableRes.getString("REMARKS");
+
+ schemaTable.Rows.Add(row);
+ }
+ }
+ finally {
+ tableRes.close();
+ }
+
+ return schemaTable;
+ }
+ catch (SQLException e) {
+ throw CreateException(e);
}
- return schemaTable;
}
public static void ReleaseObjectPool()
diff --git a/mcs/class/System.Data/Test/ProviderTests/System.Data.OleDb.jvm/OleDbConnection/ChangeLog b/mcs/class/System.Data/Test/ProviderTests/System.Data.OleDb.jvm/OleDbConnection/ChangeLog
new file mode 100644
index 00000000000..4a5d584ed12
--- /dev/null
+++ b/mcs/class/System.Data/Test/ProviderTests/System.Data.OleDb.jvm/OleDbConnection/ChangeLog
@@ -0,0 +1,3 @@
+2006-05-09 Konstantin Triger <kostat@mainsoft.com>
+
+ * OleDbConnection_GetOleDbSchemaTable.cs: in Oracle Database maps to Schema. \ No newline at end of file
diff --git a/mcs/class/System.Data/Test/ProviderTests/System.Data.OleDb.jvm/OleDbConnection/OleDbConnection_GetOleDbSchemaTable.cs b/mcs/class/System.Data/Test/ProviderTests/System.Data.OleDb.jvm/OleDbConnection/OleDbConnection_GetOleDbSchemaTable.cs
index e11714cd7ae..2e605d1586d 100755
--- a/mcs/class/System.Data/Test/ProviderTests/System.Data.OleDb.jvm/OleDbConnection/OleDbConnection_GetOleDbSchemaTable.cs
+++ b/mcs/class/System.Data/Test/ProviderTests/System.Data.OleDb.jvm/OleDbConnection/OleDbConnection_GetOleDbSchemaTable.cs
@@ -62,7 +62,13 @@ public class OleDbConnection_GetOleDbSchemaTable : ADONetTesterClass
try
{
BeginCase("Check table is not null");
- dt = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,new object[] {null,null,null,"TABLE"});
+ string catalog = null;
+ string schema = null;
+ if (ConnectedDataProvider.GetDbType(con) != DataBaseServer.Oracle)
+ catalog = "GHTDB";
+ else
+ schema = "GHTDB";
+ dt = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,new object[] {catalog,schema,null,"TABLE"});
Compare(dt == null,false);
}
catch(Exception ex) {exp = ex;}
@@ -90,8 +96,7 @@ public class OleDbConnection_GetOleDbSchemaTable : ADONetTesterClass
try
{
BeginCase("Table Customers");
- int expected = (ConnectedDataProvider.GetDbType(con) != DataBaseServer.Oracle) ? 1 : 2; // in Oracle return a value of 2 instead of 1. ?????
- Compare(dt.Select("TABLE_NAME='Customers'").Length ,expected );
+ Compare(dt.Select("TABLE_NAME='Customers'").Length ,1 );
}
catch(Exception ex) {exp = ex;}
finally {EndCase(exp); exp = null;}