Heim >Backend-Entwicklung >C#.Net-Tutorial >Was ist ado.net und seine einfachen Implementierungsdetails?

Was ist ado.net und seine einfachen Implementierungsdetails?

伊谢尔伦
伊谢尔伦Original
2017-05-31 14:32:273589Durchsuche

1. Einführung

Ado.net ist der Datenanbieter des .net-Frameworks. Es besteht hauptsächlich aus fünf Objekten: SqlConnection, SqlCommand, SqlDataAdapter, SqlDataReader und DataSet wie folgt

1. Die SqlConnection-Klasse stellt eine Verbindung zu einer SQL Server-Datenbank dar

Das Verbindungszeichenfolgenformat hat im Allgemeinen das Folgende zwei Formen, insbesondere Parameter, können sich auf msdn beziehen

1) Persist Security Info=False;Integrated Security=true;Initial Catalog=Northwind;server=(local)

2) Server=.; Database=demodb;User =sa;Password=123;

Erstellen Sie eine Verbindung wie folgt

🎜>(connString); 2.SqlCommand Klasse stellt den Datenbankausführungsbefehl dar. Objekt 1) Wird zum Festlegen des SQL-Skripts oder der gespeicherten Prozedur verwendet , Timeout, Parameter und Transaktionen, die ausgeführt werden müssen.

2) Die Erstellungsmethode ist wie folgt:

<.>();

                                                                                                              CreateCommand();

SqlCommand cmd = new SqlCommand

( ); cmd.CommandText = "select * from table"

; cmd .Connection = conn;

3) Mehrere Hauptmethoden ExecuteNonQuery: Führt SQL-Anweisungen für die Verbindung aus und gibt die Anzahl der betroffenen Zeilen zurück, wobei hauptsächlich Operationen zum Hinzufügen, Löschen und Ändern ausgeführt werden

ExecuteReader: Führt die Abfrage aus und gibt das SqlDataReader-Objekt zurück

ExecuteScalar: Führt die Abfrage aus und gibt die erste Zeile und Spalte des Ergebnissatzes zurück

3.SqlDataAdapter Klasse zum Füllen von DataSet und zum Aktualisieren von Datenbankdatenbefehlen und Datenbankverbindungen

Diese Klasse verfügt über 4 Konstruktoren wie folgt

öffentlich SqlDataAdapter();

                                              > public SqlDataAdapter(string

selectCommandText, SqlConnection selectConnection);                                                > string selectConnectionString );

4.SqlDataReader

-Klasse bietet eine reine Datenstream-Möglichkeit zum Lesen 5. Die DataSet-Klasse stellt den Cache dar von Daten im Speicher 2. Einfache Implementierung von ADO.NET Im Folgenden wird eine Hinzufügung, Löschung, Änderung implementiert. Sehen Sie sich das Beispiel an

Der obige Code verwendet using, um die Ressourcenfreigabe sicherzustellen. Alle Klassen, die die IDisposable-Schnittstelle implementieren, können mithilfe von using freigegeben werden, auch wenn die Methode des Objekts aufgerufen wird .

3. Erstellen Sie Datenquellenklasseninstanzen verschiedener Anbieter

Der obige Code gilt nur für SQL Server. Wenn Sie verschiedene Datenbanken wie Oracle implementieren möchten Wenn Sie einen weiteren Codesatz schreiben müssen, stellt .Net die DbProviderFactory-Klasse bereit, um verschiedene Datenbankinstanzen zu erstellen.

Gleichzeitig sollten die oben genannten fünf Hauptobjekte auch durch DbConnection, DbCommand, DbDataReader und DbDataAdapter ersetzt werden, um die spezifischen SQL Server-Objekte in spezifischere Objekte zu abstrahieren, die nichts mit dem Datenbanktyp zu tun haben.


4. Andere Drittanbieter-Frameworks

public class EasySqlHelper
    {
        //web.config来配置
        //private static string connString = ConfigurationManager.AppSettings["SqlConnectionString"];
        private static string connString = "Server=.;Database=demodb;User=sa;Password=123;";

        public static int ExecuteNonQuery(string sql)
        {
            using (SqlConnection conn = new SqlConnection(connString))
            {
                using (SqlCommand cmd = new SqlCommand(sql, conn))
                {
                    if (conn.State != ConnectionState.Open)
                    {
                        conn.Open();
                    }

                    return cmd.ExecuteNonQuery();
                }
            }
        }

        public static SqlDataReader ExecuteReader(string sql)
        {
            SqlConnection conn = new SqlConnection(connString);
            SqlCommand cmd = new SqlCommand(sql, conn);
            SqlDataReader rdr = null;

            try
            {
                if (conn.State != ConnectionState.Open)
                {
                    conn.Open();
                }

                rdr = cmd.ExecuteReader();
            }
            catch (SqlException ex)
            {
                conn.Dispose();
                cmd.Dispose();

                if (rdr != null)
                {
                    rdr.Dispose();
                }

                throw ex;
            }
            finally
            {
                cmd.Dispose();
            }

            return rdr;
        }

        public static DataTable ExecuteDataTable(string sql)
        {
            using (SqlConnection conn = new SqlConnection(connString))
            {
                using (SqlCommand cmd = new SqlCommand(sql, conn))
                {
                    if (conn.State != ConnectionState.Open)
                    {
                        conn.Open();
                    }

                    SqlDataAdapter adp = new SqlDataAdapter(cmd);
                    DataSet ds = new DataSet();
                    adp.Fill(ds);

                    return ds.Tables[0];
                }
            }
        }
    }

Es gibt Dapper, IBatis.Net usw., Sie können Weitere Informationen finden Sie unter

[Verwandte Empfehlungen]1.

ASP.NET kostenloses Video-Tutorial

2 zum Aktualisieren und Hinzufügen von Daten zur Excel-Tabellenmethode


3 .NET-Aufruf Gespeicherte Prozedur

//// <summary>
    /// 连接信息
    /// </summary>
    public class ConnectionInfo
    {
        private string _connectionString;
        private string _providerName;

        /// <summary>
        /// 连接字符串
        /// </summary>
        public string ConnectionString
        {
            get { return _connectionString; }
        }

        /// <summary>
        /// 提供程序的固定名称
        /// </summary>
        public string ProviderName
        {
            get { return _providerName; }
        }

        public ConnectionInfo(string connectionString, string providerName)
        {
            _connectionString = connectionString;
            _providerName = providerName;
        }
    }

    public class MySqlHelper
    {
        private static DbProviderFactory dbProvider;

        private static readonly ConnectionInfo connInfo = new ConnectionInfo("Server=.;Database=demodb;User=sa;Password=123;", "System.Data.SqlClient");

        private static void GetProvider()
        {
            dbProvider = DbProviderFactories.GetFactory(connInfo.ProviderName);
        }

        static MySqlHelper()
        {
            GetProvider();
        }

        public static int ExecuteNonQuery(string sql, DbParameter[] parameters)
        {
            int flag = 0;

            using (DbConnection conn = dbProvider.CreateConnection())
            {
                conn.ConnectionString = connInfo.ConnectionString;
                conn.Open();

                using (DbCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandText = sql;

                    if (parameters != null && parameters.Length > 0)
                    {
                        cmd.Parameters.AddRange(parameters);
                    }

                    flag = cmd.ExecuteNonQuery();
                }
            }

            return flag;
        }

        public static void ExecuteReader(string sql, DbParameter[] parameters, Action<IDataReader> action)
        {
            IDataReader rdr = null;
            
            using (DbConnection conn = dbProvider.CreateConnection())
            {
                conn.ConnectionString = connInfo.ConnectionString;
                conn.Open();

                using (DbCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandText = sql;

                    if (parameters != null && parameters.Length > 0)
                    {
                        cmd.Parameters.AddRange(parameters);
                    }

                    rdr = cmd.ExecuteReader();

                    action(rdr);

                    rdr.Close();
                }
            }
        }

        public static DataTable ExecuteDataTable(string sql, DbParameter[] parameters)
        {
            DataTable dt = null;

            using (DbConnection conn = dbProvider.CreateConnection())
            {
                conn.ConnectionString = connInfo.ConnectionString;
                conn.Open();

                using (DbCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandText = sql;

                    if (parameters != null && parameters.Length > 0)
                    {
                        cmd.Parameters.AddRange(parameters);
                    }

                    IDataReader rdr = cmd.ExecuteReader();

                    dt = new DataTable();
                    dt.Load(rdr);

                    rdr.Close();
                    
                }

                return dt;
            }
        }
    }

5. ado.net-Verbindung vs. Datenbankcode

Das obige ist der detaillierte Inhalt vonWas ist ado.net und seine einfachen Implementierungsdetails?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:ASP.NET Core sendet E-MailsNächster Artikel:ASP.NET Core sendet E-Mails