[Mono-list] Database Schema

Dan dan@astusa.com
Fri, 7 May 2004 15:28:43 -0400


If your using an OleDbConnection you can get a database table schema without
performing a query by using the GetOleDbSchemaTable method.  A DataTable is
returned with detailed schema information.  I added a column to translate
the OleDbType types to their string equivalants for clarity.

		private DataTable GetTableSchema(OleDbConnection conn,
string strDbase, string strTable)
		{
			Object[] filters = new Object[4];
			filters[0] = strDbase;
			filters[1] = null;
			filters[2] = strTable;
			filters[3] = null;
			DataTable tblSchema =
conn.GetOleDbSchemaTable(OleDbSchemaGuid.Columns, filters);
			Type colType = Type.GetType("System.String");
			tblSchema.Columns.Add("TYPE", colType);
			OleDbType dbColType;
			foreach(DataRow myRow in tblSchema.Rows)
			{
				dbColType =
(OleDbType)(int)myRow["DATA_TYPE"];
				myRow["TYPE"] = dbColType.ToString();
			}
			return tblSchema;
		}

Obviously, make sure you using the System.Data and System.Data.OleDb
namespaces and referencing System.Data.dll in your build.

Regards,
Dan Maltes

-----Original Message-----
From: mono-list-admin@lists.ximian.com
[mailto:mono-list-admin@lists.ximian.com] On Behalf Of Pedro Santos
Sent: Thursday, May 06, 2004 11:08 AM
To: mono-list@ximian.com
Subject: [Mono-list] Database Schema

Hello.
 
What's the best way to get the Database schema? The only way I see is to
perform a query to a DataSet and get get the schema from the DataSet. Is
there any other way?
 
I want to generate an application to CRUD a database. For example, to
generate the form/page to modify a row I would create one control for each
field (based on the filed type), and then update the Database on submit.
 
Whats the best way to accomplish this? Also, where can I get you code to
generate typed Dataset's? I think it would help me on this task.
 
_______________________________________________
Mono-list maillist  -  Mono-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-list