C# 3种类型的SQL(没有映射器类型linq或nhibernate)
这3种查询SQL数据的类型之间有什么区别(并不是说odbc可以请求不同的DB) 1.)ODBC dll:Microsoft.Data.ODBCC# 3种类型的SQL(没有映射器类型linq或nhibernate),c#,sql,C#,Sql,这3种查询SQL数据的类型之间有什么区别(并不是说odbc可以请求不同的DB) 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(); cm
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["..."];
- ODBC驱动程序是ODBC的一种包装器,即本机db连接上的包装器
- SqlConnection是与MSSQL服务器AFAIK交谈的最直接方式
- DatabaseFactory只是一个工厂(ehm…),当您与MSSQL服务器交谈时,它最终使用SqlConnection
Microsoft.Practices.EnterpriseLibrary.Data
是System.Data.SqlClient
的包装器,因此它为内置的SqlClient
功能添加了一些细节。正如@Felice Pollano所说,ODBC驱动程序包装了本机DB连接,因此我倾向于避免使用它们。- ODBC是一种非常古老、早已过时的DB访问标准-除非您必须使用,否则不要使用它。(在20世纪90年代左右,它是“时髦的”)
- <>强> SQLClient 是.NET裸骨ADO.NET访问SQL Server数据库的级别,也是所有其他技术的基础。它基本上可以对SQL Server执行您需要执行的任何操作—运行数据查询、运行DDL查询、执行存储过程等等。这是相当基本和简单的,例如,你必须自己键入大量重复的、枯燥的代码
- EnterpriseLibrary.Data是ADO.NET之上的一个层,它通过为您处理一些重复代码简化了常见任务
在ADO.NET基础之上有附加的东西——比如NHiBernter、实体框架等等——但是<强> SQLClient /ADO.NET实际上是当前.Net Works/P>中所有当前、现代数据库访问(基本上是SQLServer)的基础,我将避免ODBC,另一方面,这取决于您是否正在创建一个非常简单的应用程序,该应用程序将以MSSQL为目标,或者您是否计划更改数据库引擎,并且您的应用程序将成为一个真实世界的产品,在这种情况下,需要EF,或者您自己的数据库连接工厂。