本文整理汇总了C#中System.Data.Common.DbDataAdapter.FillSchema方法的典型用法代码示例。如果您正苦于以下问题:C# DbDataAdapter.FillSchema方法的具体用法?C# DbDataAdapter.FillSchema怎么用?C# DbDataAdapter.FillSchema使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.Data.Common.DbDataAdapter
的用法示例。
在下文中一共展示了DbDataAdapter.FillSchema方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GetDataTable
/// <summary>
/// ���ر�
/// </summary>
/// <param name="da"></param>
/// <param name="blFillSchema">�Ƿ���ؿ��</param>
/// <returns></returns>
public DataTable GetDataTable(DbDataAdapter da, bool blFillSchema)
{
DataTable dt = null;
try
{
dt = new DataTable();
da.Fill(dt);
if (blFillSchema)
{
da.FillSchema(dt, SchemaType.Mapped);
}
}
catch (Exception)
{
throw;
}
return dt;
}
示例2: GetTableSchema
public DataTable GetTableSchema(DbDataAdapter da)
{
DataTable dt = null;
try
{
dt = new DataTable();
da.FillSchema(dt, SchemaType.Mapped);
}
catch (Exception)
{
throw;
}
return dt;
}
示例3: GetDataSeteSchema
public DataSet GetDataSeteSchema(DbDataAdapter da)
{
DataSet ds = null;
try
{
ds = new DataSet();
da.FillSchema(ds, SchemaType.Mapped);
}
catch (Exception)
{
throw;
}
return ds;
}
示例4: GetDataSet
public DataSet GetDataSet(DbDataAdapter da, bool isFillSchema)
{
DataSet ds = new DataSet();
try
{
da.Fill(ds);
if (isFillSchema)
{
da.FillSchema(ds, SchemaType.Mapped);
}
}
catch (Exception)
{
throw;
}
return ds;
}
示例5: BuildMapFromDatabase
/// <summary>
/// Build a new set of TableMappings from SELECT's column.
/// Make a copy of the DataAdapter, Command, and Connection
/// objects to avoid accidentally overriding fields in them.
/// </summary>
/// <param name="dbDataAdapter">A writeable DataAdapter.</param>
/// <returns>2-column DataTable to hold the names.</returns>
internal static DataTable BuildMapFromDatabase(DbDataAdapter dbAdapter)
{
DataTable dt = new DataTable("mapping");
dt.Columns.Add( SOURCE_COLUMNS );
dt.Columns.Add( DATASET_COLUMNS );
IDbDataAdapter dataAdapter= (IDbDataAdapter)dbAdapter;
IDbCommand dbCommand = dataAdapter.SelectCommand;
// safety check for a missing or incomplete Command
if (dbCommand == null ||
dbCommand.CommandText == null ||
dbCommand.CommandText.Trim().Length == 0)
{
System.Windows.Forms.MessageBox.Show(
"Data Adapter's SELECT command is null or an empty string; " +
"table mappings are not available.",
"Table Mappings");
return dt;
}
// safety check for a missing Connection
if (dbCommand.Connection == null)
{
System.Windows.Forms.MessageBox.Show(
"Data Adapter's SELECT command's Connection is null; " +
"table mappings are not available.",
"Table Mappings");
return dt;
}
// make a schema table that the DbAdapter can fill in
DataTable dtSchema = new DataTable();
Cursor cursor = Cursor.Current; // save cursor, probably Arrow
Cursor.Current = Cursors.WaitCursor; // hourglass cursor
try
{
dbAdapter.FillSchema(dtSchema, SchemaType.Source);
// copy the schema columns to the 2-column DataTable
// that will be the DataSource for the form's datagrid.
for (int i=0; i<dtSchema.Columns.Count; i++)
{
DataColumn dataColumn = dtSchema.Columns[i];
System.Data.DataRow datarow = dt.NewRow();
datarow[ TableMappings.SOURCE_COLUMNS ] =
dataColumn.ColumnName;
datarow[ TableMappings.DATASET_COLUMNS ] =
dataColumn.ColumnName;
dt.Rows.Add( datarow );
}
}
finally { Cursor.Current = cursor; } // resored Arrow cursor
return dt; // return with all went well
}
示例6: GetTableFromDb
public virtual DataTable GetTableFromDb(string tablename, bool with_primary_key, bool with_max_string_length, bool with_default_values, bool CaseSensivity)
{
_dt = new DataTable(tablename);
string sql = "";
if (!CaseSensivity)
{
sql = "select * from {0}";
if (!string.IsNullOrEmpty(_owner))
{
sql = "select * from {0}.{1}";
sql = string.Format(sql, _owner, tablename);
}
else
sql = string.Format(sql, tablename);
}
else
{
sql = "select * from {0}{1}{2}";
if (!string.IsNullOrEmpty(_owner))
{
sql = "select * from {0}{1}{2}.{0}{3}{2}";
sql = string.Format(sql, _open_bracket, _owner, _close_bracket, tablename);
}
else
sql = string.Format(sql, _open_bracket, tablename, _close_bracket);
}
_DA = CreateDataAdapter(sql);
_DA.FillLoadOption = LoadOption.Upsert;//--Важднейшая опция, после которой можно вставить эту таблицу в другую базу
_DA.FillSchema(_dt, SchemaType.Source);
PrepareTableSchemeBeforeFill(_dt);
_DA.Fill(_dt);
#warning перенести код ниже в PrepareTableSchemeBeforeFill
//--описание колонок
foreach (DataColumn col in _dt.Columns)
{
var col_info = GetDbColumnInformation(tablename, col.ColumnName, CaseSensivity);
if (col_info.AdditionalInfo!=null && col_info.AdditionalInfo.ToString() != "default")
col.AllowDBNull = col_info.IsNullable;
if (with_max_string_length)
{
if (col.DataType == typeof(string))
if (col_info.MaxLength > 0 && col_info.MaxLength > col.MaxLength)
col.MaxLength = col_info.MaxLength;
}
if (with_default_values)
{
//--надо будет придумать какой-то флаг, чтобы сообщалось что не все дефолтные значения распарсились
if (col_info.DefaultValue != null && col_info.DefaultValue != DBNull.Value)
{
try
{
col.DefaultValue = col_info.DefaultValue;
}
catch
{
col.DefaultValue = DBNull.Value;
}
}
}
}
if (with_primary_key)
_dt = GetTablePrimaryKey(_dt, CaseSensivity);
return _dt;
}
示例7: FillSchemaTest
public void FillSchemaTest()
{
string query = "select * from invalid_table";
// Test if connection is closed if exception occurs during fill schema
m_adapter = GetDataAdapter(query);
DataSet data = new DataSet("test");
try {
m_adapter.FillSchema(data, SchemaType.Source);
Assert.Fail("#A1 Expected to fail due to invalid table name");
} catch (DbException ex) {
Assert.IsNotNull(ex.Message, "#A2");
Assert.IsTrue(ex.Message.Contains("42X05"), "#A3: " + ex.Message);
}
// Test Primary Key is set (since primary key column returned)
query = "select id, type_int from numeric_family where id=1";
m_adapter = GetDataAdapter(query);
data = new DataSet("test1");
m_adapter.FillSchema(data, SchemaType.Source);
Assert.AreEqual(1, data.Tables[0].PrimaryKey.Length,
"#B1 Primary Key property must be set");
// Test Primary Key is not set (since primary key column is returned)
query = "select type_varchar, type_int from numeric_family where id=1";
m_adapter = GetDataAdapter(query);
data = new DataSet("test2");
m_adapter.FillSchema(data, SchemaType.Source);
Assert.AreEqual(0, data.Tables[0].PrimaryKey.Length,
"#B2 Primary Key property should not be set");
// Test multiple tables are created for a batch query
query = "create procedure multiplePKResultSets()" +
" language java parameter style java external name" +
" 'tests.TestProcedures.multiplePKResultSets' dynamic result sets 2";
m_cmd = m_conn.CreateCommand();
m_cmd.CommandText = query;
m_cmd.ExecuteNonQuery();
data = new DataSet("test3");
query = "call multiplePKResultSets()";
m_adapter = GetDataAdapter(query);
m_adapter.FillSchema(data, SchemaType.Source);
Assert.AreEqual(2, data.Tables.Count,
"#B3 A table shud be created for each Result Set");
Assert.AreEqual(2, data.Tables[0].Columns.Count,
"#B4 should have 2 columns");
Assert.AreEqual(3, data.Tables[1].Columns.Count,
"#B5 Should have 3 columns");
Assert.AreEqual(0, data.Tables[0].PrimaryKey[0].Ordinal,
"#B6 Expected PK constraint at first column");
Assert.AreEqual(1, data.Tables[1].PrimaryKey[0].Ordinal,
"#B7 Expected PK constraint at second column");
// Test if table names and column names are filled correctly
query = "create procedure multipleNoColumnResults()" +
" language java parameter style java external name" +
" 'tests.TestProcedures.multipleNoColumnResults' dynamic result sets 2";
m_cmd.CommandText = query;
m_cmd.ExecuteNonQuery();
query = "call multipleNoColumnResults ()";
m_adapter = GetDataAdapter(query);
data = new DataSet("test4");
m_adapter.FillSchema(data, SchemaType.Source);
Assert.AreEqual("Table", data.Tables[0].TableName);
Assert.AreEqual("Table1", data.Tables[1].TableName);
Assert.AreEqual("1", data.Tables[0].Columns[0].ColumnName,
"#C1 Unnamed col shud be named as 'ColumnN'");
Assert.AreEqual("2", data.Tables[0].Columns[1].ColumnName,
"#C2 Unnamed col shud be named as 'ColumnN'");
Assert.AreEqual("1", data.Tables[1].Columns[0].ColumnName,
"#C3 Unnamed col shud be named as 'ColumnN'");
Assert.AreEqual("2", data.Tables[1].Columns[1].ColumnName,
"#C4 Unnamed col shud be named as 'ColumnN'");
}