2010-08-03 15 views
-2

我需要一個用於處理應用程序中每種數據庫的組件。 我想訪問任何類型的數據庫,並將tabals和它的文件夾傳遞給我的應用程序。 請幫助我。很感謝。用於在.net中處理數據庫的組件

+0

是否想在超級高級用戶的*運行時*連接數據庫? – Kobi 2010-08-03 08:08:49

+0

是的,我想支持最終用戶可以在運行時連接到他的數據庫的能力。 – Farna 2010-08-04 13:28:44

+0

喜歡實體空間 – Farna 2010-08-04 13:29:46

回答

0

這是一個非常普遍的問題。例如,您可能會碰巧找到一個同樣覆蓋面向對象的數據庫系統和關係數據庫系統的單個組件。

也許你可以提供更具體的細節?

如果您可以限制關係數據庫系統的要求,一個好的起點可能是NHibernate甚至fluent-nhibernate

0

這取決於您的.NET版本。但是,如果您使用的是.NET 3.5,那麼請查看Linq-To-Sql或/和Entity-Framework。這些都直接構建到框架中,並很好地集成到.NET的用戶界面部分。

1

我認爲最接近的技術是ADO.net中的ODBC對象,但正如另一個提到的,它不會理清SQL方言問題(Oracle,Access等與SQL Server有一個稍微不同的語法, 例如)。

只要它與ADO.net中的ODBC對象一起工作,ORM(對象關係映射)就可以幫助解決這個問題。

-2

U可以做到這一點,但不是預定義的組件.Jus必須創建自己的。我在我的項目中有相同的需求.Plz看看下面的代碼。它可能會有所幫助。

if (database != "EXCEL") // just some dummy string to pass if its excel file .or else the database name in case of other DBs 
{ 
    connectionString = "Data Source=" + source + ";Provider=SQLOLEDB;Initial Catalog=" + database + ";User Id=" + username + ";password=" + password; 
} 
else 
{ 
    connectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + source + ";Extended Properties=\"Excel 12.0;HDR=YES;\""; 
} 

//string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=ElementDependencies.xls;Extended Properties=""Excel 8.0;HDR=YES;"""; 

OleDbConnection con = new OleDbConnection(connectionString); 
DataTable schemaCols, schemaTbl; 
List<string> tablesnames = new List<string>(); 
try 
{ 
    con.Open(); 
    object[] objArrRestrict; 
    objArrRestrict = new object[] { null, null, null, "TABLE" }; 
    schemaTbl = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, objArrRestrict); 
    foreach (DataRow row in schemaTbl.Rows) 
    { 
     tablesnames.Add(row["TABLE_NAME"].ToString()); 
    } 

    List<string> columnnames = new List<string>(); 

    foreach (string str in tablesnames) 
    { 
     string selTbl = str; 
     object[] objArrRestrictNew = new object[] { null, null, selTbl, null }; 
     schemaCols = con.GetOleDbSchemaTable(OleDbSchemaGuid.Columns, objArrRestrictNew); 
     foreach (DataRow row in schemaCols.Rows) 
     { 
      columnnames.Add(row["COLUMN_NAME"].ToString()); 
     } 
    } 
}