2011-02-08 23 views
1

3種類

1)ODBC dllファイル(別のDBを頼むことができるODBCを語っていない)データのためのSQLを求めて、これらの3種類の違いは何か

:Microsoftは。 Data.ODBC

OdbcConnection cn; 
OdbcCommand cmd; 
string MyString; 

MyString="Select ..."; 
cn= new OdbcConnection("Driver={SQL Server};Server=...;UID=...;PWD=...;Database=...;"); 
cn.Open(); 
cmd=new OdbcCommand(MyString,cn); 
OdbcDataReader reader = cmd.ExecuteReader(); 

while (reader.Read()) 
{ 
    .... 
} 

reader.Close(); 
cn.Close(); 

第DLL:System.Data.SqlClientの

SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["…"].ConnectionString);   
SqlDataReader rdr = null; 

SqlCommand cmd = new SqlCommand(); 
cmd.Connection = conn; 
cmd.CommandText = "SELECT ..." 

cmd.CommandType = CommandType.Text; 
conn.Open(); 
rdr = cmd.ExecuteReader();    

while (rdr.Read()) 
{ 
    ..... 
} 
rdr.Close(); 
conn.Close(); 

第三:DLL:Microsoft.Practices.EnterpriseLibrary.Data

Database context = DatabaseFactory.CreateDatabase("..."); 
IDataReader dataReader = context.ExecuteReader(CommandType.Text,"SELECT ...") 

dataReader.Read(); 
var inputid = (int)dataReader["..."]; 

答えて

2
  • ODBCは非常に古い、とっくにいなくなってDBアクセスの標準である - あなたは絶対に必要ない限り、それを使用しないでください。

  • のSqlClient SQL Serverデータベースにアクセスする.NET最低限のADO.NETレベルがあり、他のすべての技術の基盤(それが戻って1990年代にかそこら「ヒップ」でした)。基本的には、データクエリの実行、DDLクエリの実行、ストアドプロシージャの実行など、SQL Serverを使用して必要な作業をすべて実行できます。それはかなり基本的で裸の骨です。あなたは、コードを退屈、繰り返しの多くを入力する必要があり、自分

  • EnterpriseLibrary.Dataはあなたのための反復コードの一部を処理することにより、一般的なタスクを簡素化するADO.NETの上の層です。等々NHibernateは、Entity Frameworkのようなものと - -

ありADO.NETの基礎の上に、追加のものがあるが、のSqlClient/ADO.NETは本当にすべての現在の、近代的なデータベースアクセスのための基礎であります(ほとんどSQL Serverに).NETの世界で

0
  • ODBCドライバは、そのネイティブDB接続
  • SqlConnectionオブジェクトのラッパーで、ODBCラッパーの一種であるMSSQLサーバーに私の知る限り
  • DatabaseFactory話の最も直接的な方法は、単に工場(EHMですされています...)は、最終的にMSSQL Serverと話すときにSqlConnectionを使用します。
+0

これはどちらが良いですか? – kosnkov

+1

ODBCを避けるのは、MSSQLを対象とする非常に単純なアプリケーションを作成しているか、DBEngineを変更しようとしていてアプリケーションが現実世界の製品になる場合です。 EF、またはDBConnection用の独自のファクトリが必要です。 –

0

Microsoft.Practices.EnterpriseLibrary.DataSystem.Data.SqlClientラッパーですので、内蔵のSqlClient機能にいくつかの細かな点を追加します。 @Felice Pollano氏によると、ODBCドライバはネイティブDB接続をラップするので、私はそれらを避ける傾向があります。