Maison >développement back-end >Tutoriel C#.Net >Qu'est-ce qu'ado.net et ses détails simples de mise en œuvre

Qu'est-ce qu'ado.net et ses détails simples de mise en œuvre

伊谢尔伦
伊谢尔伦original
2017-05-31 14:32:273589parcourir

1. Introduction

Ado.net est le fournisseur de données du framework .net Il se compose principalement de cinq objets : SqlConnection, SqlCommand, SqlDataAdapter, SqlDataReader et DataSet. comme suit

1. La classe SqlConnection représente une connexion à une base de données de serveur SQL

Le format de chaîne de connexion a généralement le suivant. deux formes, en particulier les paramètres peuvent faire référence à msdn

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

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

Créez une connexion comme suit

🎜>(connString); 2.SqlCommand la classe représente la commande d'exécution de la base de données Objet 1) Utilisé pour définir le script SQL ou la procédure stockée , le délai d'attente, les paramètres et les transactions qui doivent être exécutés.

2) La méthode de création est la suivante :

();

                                                                                                                                                      CreateCommand();

. SqlCommand cmd = nouveau

SqlCommand

(); cmd.CommandText =

"sélectionner * dans le tableau"

;

cmd.Connection = conn;

3) Plusieurs méthodes principales ExecuteNonQuery : Exécute des instructions SQL sur la connexion et renvoie le nombre de lignes affectées, effectuant principalement des opérations d'ajout, de suppression et de modification

ExecuteReader : exécute la requête et renvoie l'objet SqlDataReader

ExecuteScalar : exécute la requête et renvoie la première ligne et la première colonne du jeu de résultats

3.SqlDataAdapter Classe utilisée pour remplir DataSet et mettre à jour les commandes de données de base de données et les connexions à la base de données

Cette classe a 4 constructeurs comme suit

public SqlDataAdapter();

                                              > public SqlDataAdapter(string

selectCommandText, SqlConnection selectConnection);                                                  > chaîne selectConnectionString ); 4.SqlDataReader

fournit un moyen de lire uniquement le flux de données

5 La classe DataSet représente le cache. de données en mémoire 2. Implémentation simple de ADO.NET Ce qui suit implémente un ajout, une suppression, une modification, Vérifiez l'exemple

Le code ci-dessus utilise using pour garantir la libération des ressources. Toutes les classes qui implémentent l'interface IDisposable peuvent être libérées en utilisant using, même lors de l'appel de la méthode de l'objet. Il sera également libéré si une exception se produit. .

3. Créez des instances de classe de source de données de différents fournisseurs

Le code ci-dessus n'est valable que pour le serveur SQL. Si vous souhaitez implémenter différentes bases de données telles qu'Oracle, vous devez le faire. besoin d'en écrire un autre Ensemble de codes, .Net fournit la classe DbProviderFactory pour créer différentes instances de base de données.

Dans le même temps, les cinq objets majeurs ci-dessus doivent également être remplacés par DbConnection, DbCommand, DbDataReader et DbDataAdapter pour résumer les objets spécifiques du serveur SQL en objets plus spécifiques qui n'ont rien à voir avec le type de base de données.

4. Autres frameworks tiers

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];
                }
            }
        }
    }
Il existe Dapper, IBatis.Net, etc., vous pouvez reportez-vous et apprenez

【Recommandations associées】

1 Tutoriel vidéo gratuit ASP.NET

2.

C# utilise Ado.Net. pour mettre à jour et ajouter des données à la méthode du tableau Excel


3

ADO.NET lit le code d'implémentation EXCEL ((c#))
//// <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;
            }
        }
    }

4. Appel .NET Procédure stockée

5

Connexion ado.net vs code de base de données

.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:ASP.NET Core envoie un e-mailArticle suivant:ASP.NET Core envoie un e-mail