Page 1 of 1
GetSchema column names
Posted: Sun 10 Aug 2014 07:21
by ErikEJ
I am trying to use dotConnect Express for SQLite as a drop in replacement for System.Data.SQLite, but having a hard time, as I use the GetSchema columns extensively in my app, and the colum names are completely different - how come?
Re: GetSchema column names
Posted: Tue 12 Aug 2014 15:16
by Pinturiccio
The GetSchema("Columns") method of dotConnect for SQLite returns its own column set.
If your application works with column names returned by the System.Data.SQLite provider, you could create a simple function that renames columns in a DataTable object so that they are named as the columns, returned by System.Data.SQLite. No other code changes are required. Here is an example of such a function:
Code: Select all
static void Main(string[] args)
{
SQLiteConnection conn = new SQLiteConnection("your connection string");
DataTable dt = GetColumns(conn);
}
static DataTable GetColumns(SQLiteConnection conn)
{
conn.Open();
var dt = conn.GetSchema("Columns");
conn.Close();
dt.Columns["Catalog"].ColumnName = "TABLE_CATALOG";
dt.Columns["Schema"].ColumnName = "TABLE_SCHEMA";
dt.Columns["Table"].ColumnName = "TABLE_NAME";
dt.Columns["Name"].ColumnName = "COLUMN_NAME";
dt.Columns["Position"].ColumnName = "ORDINAL_POSITION";
dt.Columns["HasDefaultValue"].ColumnName = "COLUMN_HASDEFAULT";
dt.Columns["DefaultValue"].ColumnName = "COLUMN_DEFAULT";
dt.Columns["Nullable"].ColumnName = "IS_NULLABLE";
dt.Columns["TypeName"].ColumnName = "DATA_TYPE";
dt.Columns["CharacterMaximumLength"].ColumnName = "CHARACTER_MAXIMUM_LENGTH";
dt.Columns["NumericPrecision"].ColumnName = "NUMERIC_PRECISION";
dt.Columns["NumericScale"].ColumnName = "NUMERIC_SCALE";
dt.Columns["IsUnique"].ColumnName = "UNIQUE";
dt.Columns["PrimaryKey"].ColumnName = "PRIMARY_KEY";
return dt;
}