以下两个函数,干的是一个事情,在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一个垃圾!!!
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一个垃圾!!!
这个怎么能类比呢。。ADO。NET 就是要屏蔽各种数据库的差别才搞的一个数据访问层,既然搞了,还没擦干净屁股还要用SQL来继续搞这个,搞那个
一看你的代码就是未入门的水平,从你的抱怨中看出你连最基本的几个.net数据提供者及数据库连接对象都不懂
初学者,切忌浮躁有些字符串在有些数据库中有关键字,有些则不是。有些数据库有些特征是其它数据库里没有的。你现在取的是数据库的结构,同学,微软的ADO.NET没有提供通用的取DESCRIPTION的功能。并不是他垃圾。
搞。NET的确混口饭吃。。小公司是搞Winform开发的。这个哥也没办法,不过看情况,公司又准备搞云计算。SAAS我接触。NET时间不长。。真不知道。NET能做哪块的东西??发发牢骚,楼上一个五星的哥们提醒的不错“微软的ADO.NET没有提供通用的取DESCRIPTION的功能。”,看看返回的结果集。。里面倒有DESCRIPTION。。这个微软不是误导吗??
其实我开个帖子的意思,就是等大牛的一句话,你说这个不行。我就不搞这个了。咱另寻路子,总能搞定是不?
dbproviderfactory ??? 不是一个层次上的东西吧。ado.net 既然是个数据访问层,就应该是个标准,如果数据库有特例,那对这个标准没什么影响吧。无非是取不出来而已,但现在是已经有标准了,数据库也有东西,但就是取不出来。难道各位老大认为很正常??