微软的技术真是够垃圾的,GetSchema ,GetOleDbSchemaTable 在不同数据库上表现不同
以下两个函数,干的是一个事情,在Access上和sql server 以及oracle 的表现各有不同。。。
DESCRIPTION 信息在Access 里能取到,
在其他数据库上取不出来
实在无语。。。微软的技术真是够垃圾的
搞了半天,仍要写SQL取数据库的结构信息!!!!那微软封装这样的API干吗呢。其他属性两个接口返回同样的东西,一个是数值,一个是enum的定义。。。实在喷血啊。
public DataTable GetColumns(string ConnectionStr, string tbname)
{
try
{
if (ConnectionStr != null && tbname != null)
{
SqlConnection con = new SqlConnection(ConnectionStr);
con.Open();
DataTable columnInfo = con.GetSchema(
System.Data.SqlClient.SqlClientMetaDataCollectionNames.Columns,
new string[] { null, null, tbname, null }
);
con.Close();
return columnInfo;
}
}
catch (System.Exception ex)
{
Trace.WriteLine(ex.Message);
}
return null;
}
public DataTable GetColumns(string ConnectionStr, string tbname)
{
try
{
if (ConnectionStr != null && tbname != null)
{
OleDbConnection con = new OleDbConnection(ConnectionStr);
con.Open();
DataTable columnInfo = con.GetOleDbSchemaTable(OleDbSchemaGuid.Columns, new object[] { null, null, tbname, null });
con.Close();
return columnInfo;
}
}
catch (System.Exception ex)
{
Trace.WriteLine(ex.Message);
}
return null;
}
搞了一大堆的什么这个connection ,那个connection ... 不如JDBC一个。。。
垃圾!!!