3 типа запроса SQL (без мапперов типа linq или nhibernate) - PullRequest
1 голос
/ 08 февраля 2011

в чем разница между этими 3 типами запроса SQL для данных (не говоря о том, что odbc может запрашивать разные БД)

1.) ODBC dll: 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["..."];

Ответы [ 3 ]

2 голосов
/ 09 февраля 2011
  • ODBC - это очень старый, давно ушедший стандарт доступа к БД - не используйте его, если в этом нет необходимости. (это было "бедро" в 1990-х или около того)

  • SqlClient - это базовый уровень .NET ADO.NET для доступа к базам данных SQL Server и основа для всех других технологий. Он может в основном делать с SQL Server все, что вам нужно - запускать запросы данных, выполнять запросы DDL, выполнять хранимые процедуры и так далее. Это довольно простой и голый, например Вы должны набрать много повторяющихся, скучных кодов самостоятельно

  • EnterpriseLibrary.Data - это слой поверх ADO.NET, который упрощает общие задачи за счет обработки некоторых повторяющихся кодов.

В основе ADO.NET есть и другие вещи, такие как NHibernate, Entity Framework и т. Д., Но SqlClient / ADO.NET действительно является основой для всего современного доступа к базе данных (в основном для SQL Server) в мире .NET

0 голосов
/ 08 февраля 2011

Microsoft.Practices.EnterpriseLibrary.Data - это оболочка для System.Data.SqlClient, поэтому она добавляет некоторые тонкости во встроенную функциональность SqlClient.Как сказала @Felice Pollano, драйверы ODBC обертывают родное соединение с БД, поэтому я стараюсь их избегать.

0 голосов
/ 08 февраля 2011
  • Драйверы ODBC являются своего рода оболочкой для ODBC, то есть оболочкой над собственным подключением к базе данных
  • SqlConnection - самый прямой способ общения с MSSQL-сервером AFAIK
  • DatabaseFactory - это просто фабрика (ehm ...), которая в конечном итоге использует SqlConnection при общении с MSSQL Server.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...