2010年3月13日土曜日

DbProviderFactory(その2)

前回の続き(?)。
Providerに依存しないコードを書いてみた。

  1. ConnectionStringSettings css = ConfigurationManager.ConnectionStrings["MyConnection"];  
  2. DbProviderFactory factory = DbProviderFactories.GetFactory(css.ProviderName);  
  3.   
  4. DbConnectionStringBuilder sb = factory.CreateConnectionStringBuilder();  
  5. sb.ConnectionString = css.ConnectionString;  
  6. //この辺はProviderに依存するよなぁ  
  7. sb.Add("Password""xxxx");  
  8.   
  9. using (DbConnection connection = factory.CreateConnection())  
  10. {  
  11.     connection.ConnectionString = sb.ConnectionString;  
  12.     connection.Open();  
  13.     //factory.CreateCommand()でもいいけど、こっちの方が素直な気がする。  
  14.     DbCommand command = connection.CreateCommand();  
  15.   
  16.     //ここも依存することが多いよね。  
  17.     command.CommandText = "SELECT * FROM TABLE1 WHERE ID = ?";  
  18.     DbParameter p = factory.CreateParameter();  
  19.     p.DbType = DbType.Int32;  
  20.     p.Value = 1;  
  21.     command.Parameters.Add(p);  
  22.   
  23.     using (DbDataReader reader = command.ExecuteReader())  
  24.     {  
  25.         while (reader.Read())  
  26.         {  
  27.             reader.GetInt32(0);  
  28.         }  
  29.     }  
  30. }  

0 件のコメント: