C# utilise Npgsql ou SqlClient pour se connecter à la base de données

Table des matières

SqlClient se connecte à SQL Server

Installer SQLClient

SqlConnection

Commande SQL

La différence entre SqlConnection et SqlCommand

Npgsql se connecte à PostgreSQL

Installer Npgsql

pgsql paramètre l'auto-incrémentation 

insérer

sélectionner

Requête avec DataReader

Obtenir des données par indice

Requête avec DataAdapter

Résumer


SqlClient se connecte à SQL Server

Installer SQLClient

Téléchargez directement depuis le gestionnaire de paquets nuget de vs ou rider. Le package nuget System.Data.SqlClient, SqlClient est une bibliothèque de classes fournie par Microsoft pour connecter SQL Server et d'autres bases de données relationnelles.

SqlConnection

using System.Data.SqlClient;

string connectionString = "Server=myServerAddress;Database=myDatabase;User Id=myUsername;Password=myPassword;";  
using (SqlConnection connection = new SqlConnection(connectionString))  
{
    connection.Open();  
    // 进行数据库操作  
    connection.Close();  
}

Dans le code ci-dessus, vous devez remplacer "myServerAddress" par l'adresse IP ou le nom d'hôte de votre serveur de base de données SQL Server, "myDatabase" par le nom de la base de données à laquelle vous souhaitez vous connecter, et "myUsername" et "myPassword" par le nom d'utilisateur et mot de passe de l'utilisateur de la base de données.

Commande SQL

Outre l'objet SqlConnection, vous pouvez également utiliser l'objet SqlCommand pour vous connecter à la base de données SQL Server et effectuer des opérations de requête SQL. Voici un exemple de code pour se connecter à une base de données SQL Server à l'aide de l'objet SqlCommand :

using System.Data.SqlClient;

string connectionString = "Server=myServerAddress;Database=myDatabase;User Id=myUsername;Password=myPassword;";  
using (SqlConnection connection = new SqlConnection(connectionString))  
{
    connection.Open();  
    using (SqlCommand command = new SqlCommand("SELECT * FROM myTable", connection))  
    {  
        command.ExecuteReader();  
        // 进行数据库操作  
    }  
    connection.Close();  
}

Dans le code ci-dessus, vous devez remplacer "myServerAddress" par l'adresse IP ou le nom d'hôte de votre serveur de base de données SQL Server, "myDatabase" par le nom de la base de données à laquelle vous souhaitez vous connecter, et "myUsername" et "myPassword" par le nom d'utilisateur et mot de passe de l'utilisateur de la base de données.

La différence entre SqlConnection et SqlCommand

SqlConnection et SqlCommand sont deux objets importants de la bibliothèque de classes SqlClient pour la connexion et l'exploitation des bases de données relationnelles. Ils présentent les différences suivantes :

  1. Objet de connexion : SqlConnection est un objet qui se connecte à la base de données, il est utilisé pour établir une connexion avec la base de données et peut exécuter des instructions SQL dans l'état de connexion. SqlCommand est un objet utilisé pour exécuter des instructions SQL. Il doit contenir les informations des instructions SQL et des objets de connexion. Il peut exécuter des instructions SQL dans l'état de connexion ou être utilisé seul.

  2. Instruction SQL : l'objet SqlCommand peut exécuter une instruction SQL, qui peut contenir n'importe quelle instruction SQL, telle que SELECT, INSERT, UPDATE ou DELETE et d'autres opérations. L'objet SqlConnection ne peut être utilisé que pour exécuter des instructions SQL, il ne peut pas effectuer d'autres opérations.

  3. État de connexion : l'objet SqlCommand doit contenir les informations de l'objet de connexion afin d'exécuter l'instruction SQL dans l'état de connexion. L'objet SqlConnection peut exécuter des instructions SQL dans l'état de connexion ou il peut être utilisé seul.

  4. Mode d'exécution : l'objet SqlCommand peut être exécuté de manière asynchrone et peut continuer à effectuer d'autres opérations en attendant la fin de l'exécution de l'instruction SQL. L'objet SqlConnection ne peut être exécuté que de manière synchrone et doit attendre la fin de l'exécution de l'instruction SQL dans le bloc de code avant de continuer à effectuer d'autres opérations.

En général, l'objet SqlConnection est principalement utilisé pour établir et exécuter des instructions SQL, tandis que l'objet SqlCommand est plus flexible et peut exécuter des instructions SQL arbitraires.


Npgsql se connecte à PostgreSQL

Selon les informations, la bibliothèque de classes SqlClient peut être utilisée pour se connecter à une variété de bases de données relationnelles, notamment SQL Server, MySQL, Oracle, PostgreSQL, etc. 

essayez-le

using System.Data.SqlClient;

SqlConnection connection = new SqlConnection ("Server= 127.0.0.1;Database=study;User Id=postgres;Password=1qazZAQ!;");

connection.Open();

Je ne sais pas où j'ai fait une erreur. J'ai signalé une erreur lorsque je l'ai ouvert, alors je l'ai changé en Npgsql

Installer Npgsql

using Npgsql;

 string connString = "Host=localhost;Port=5432;Username=postgres;Password=1qazZAQ!;Database=study";
 var conn = new NpgsqlConnection(connString);
 conn.Open();

imprimer l'état

Console.WriteLine(conn.State);

succès!

Ensuite, nous utilisons la connexion pour effectuer certaines opérations, d'abord ouvrir l'outil de visualisation de base de données pour créer une table,

pgsql paramètre l'auto-incrémentation 

Permettez-moi d'intervenir ici, pgSQL est un peu plus gênant que MySQL pour définir l'auto-incrémentation

Dans navicat, mysql peut directement cocher l'option pour définir l'auto-incrémentation

 Pour pgsql, cliquez sur Autre, sélectionnez la séquence, puis créez une nouvelle séquence

 

propriétaire : le nom de la base de données de la table

Incrément, valeur actuelle, valeur de départ, valeurs maximales et minimales

Cache : spécifiez la valeur de la séquence pré-allouée dans la base de données pour un accès rapide, ce qui signifie qu'une certaine auto-incrémentation peut être fournie à l'avance, par exemple : je veux définir l'auto-incrémentation sous le champ id maintenant, définissez le cache à 20, et la prochaine fois que j'ajouterai des données À ce moment-là, l'identifiant passera automatiquement à 2, mais ce 2 a déjà été généré et ne le sera pas maintenant, économisant une partie de la pression sur la base de données.

Cycle : Cela signifie que lorsque la valeur d'auto-incrémentation dépasse la valeur maximale définie, elle recommencera à partir de la valeur minimale ; si le cycle n'est pas défini, une erreur sera signalée lorsqu'elle dépassera.

Ensuite, enregistrez la séquence, souvenez-vous du nom enregistré, car je l'ai enregistré ici sous pg_test

 Retour à la table de conception tout à l'heure

Cliquez sur la ligne d'id, entrez nextval('pg_test'::regclass) par défaut, et remplacez pg_test par le nom que vous venez de définir. A partir de là, l'id d'auto-incrémentation de pgsql est défini

insérer

using Npgsql;

string connString = "Host=localhost;Port=5432;Username=postgres;Password=1qazZAQ!;Database=study";
using (NpgsqlConnection conn = new NpgsqlConnection(connString))
{
    conn.Open();
    string sql = "INSERT INTO  user1 ( name,age) values ('小明',3)";
    using (NpgsqlCommand command = new NpgsqlCommand(sql, conn))
    {
        command.ExecuteNonQuery();    
    }
}

Exécutez deux fois, ouvrez navicat, vous pouvez voir que la base de données a ajouté des données et que l'identifiant a été incrémenté

Quant à savoir pourquoi mon identifiant est 9 en premier, parce que je viens de l'exécuter plusieurs fois, puis de vider la table.Si je réinitialise l'auto-incrémentation, revenez à l'endroit où je viens de définir l'auto-incrémentation et restaurez la valeur actuelle à 1.

sélectionner

Requête avec DataReader

 Ou connectez-vous à la base de données tout à l'heure

string connString = "Host=localhost;Port=5432;Username=postgres;Password=1qazZAQ!;Database=study";
using NpgsqlConnection conn = new NpgsqlConnection(connString);
conn.Open();

Obtenir des données par indice

using NpgsqlCommand command = new NpgsqlCommand("select * from user1", conn);

var npgsqlDataReader = command.ExecuteReader();

while (npgsqlDataReader.Read())
{
     var student = new Student(
          npgsqlDataReader.GetInt32(0),
          npgsqlDataReader.GetString(1),
          npgsqlDataReader.GetInt32(2)
     );

     Console.WriteLine(student.Id + student.Name + student.Age);
}

record Student(int Id, string Name, int Age);

 

 Obtenir par nom de champ

using NpgsqlCommand command = new NpgsqlCommand("select * from user1", conn);

var npgsqlDataReader = command.ExecuteReader();

while (npgsqlDataReader.Read())
{
     Console.WriteLine(npgsqlDataReader["id"].ToString()+npgsqlDataReader["name"]+npgsqlDataReader["age"]);
}

 l'effet est le même

Requête avec DataAdapter

La différence entre DataAdapter et DataReader est que le DataAdapter se déconnectera automatiquement après avoir obtenu les données et stockera les données en mémoire.

string connString = "Host=localhost;Port=5432;Username=postgres;Password=1qazZAQ!;Database=study";
using NpgsqlConnection conn = new NpgsqlConnection(connString);

Lire les données en mémoire, vous pouvez utiliser un ensemble de données ou une table de données pour stocker

var npgsqlDataAdapter = new NpgsqlDataAdapter();
npgsqlDataAdapter.SelectCommand = new NpgsqlCommand("select * from user1",conn);

// var dataSet = new DataSet();
// npgsqlDataAdapter.Fill(dataSet);//将数据填充到dataSet
var dataTable = new DataTable();
npgsqlDataAdapter.Fill(dataTable);//将数据填充到dataTable

foreach (DataRow dataTableRow in dataTable.Rows)
{
    Console.WriteLine(dataTableRow["id"]+(string)dataTableRow["name"]+dataTableRow["age"]);
}

 table de données à lister

List<student> list = new List<student>();

foreach (DataRow dataTableRow in dataTable.Rows)
{
    student student = new student(
        (int)dataTableRow["id"],
        (string)dataTableRow["name"],
        (int)dataTableRow["age"]
    );
    list.Add(student);
}
foreach (var student1 in list)
{
    Console.WriteLine(student1);
}

record student(int Id, string Name, int Age);

 

Résumer

Command est un objet utilisé pour exécuter des requêtes SQL ou des commandes de mise à jour, et il peut contenir un ou plusieurs paramètres pour transmettre des données à la base de données. Utilisez l'objet Command pour effectuer une requête ou une opération de mise à jour et renvoyer un jeu de résultats.

DataAdapter est un objet utilisé pour connecter des sources de données (telles que des bases de données) et des contrôles de données (tels que des tables de données). Il peut effectuer des requêtes SQL ou des opérations de mise à jour en fonction de l'objet Command et lier le jeu de résultats au contrôle de données.

DataReader est l'objet utilisé pour lire l'ensemble de données, il peut lire les données interrogées et les lier au contrôle de données. L'objet DataReader ne convient pas pour effectuer des opérations de requête complexes, car il ne peut lire que le jeu de résultats qui a déjà effectué des opérations de requête.

Avant d'utiliser ces trois objets, vous devez généralement utiliser l'objet Connection pour vous connecter à la base de données. L'objet Connection est utilisé pour gérer les connexions à la base de données, qui peuvent ouvrir ou fermer des connexions à la base de données, et effectuer des opérations de connexion, de déconnexion ou de mise à jour de la base de données. Ce n'est qu'après une connexion réussie à la base de données que les objets Command, DataAdapter et DataReader peuvent être utilisés pour interroger, mettre à jour ou lire des données.

En termes simples, c'est:

Connection se connecte à la base de données, puis Command exécute l'instruction SQL. Si les opérations d'insertion, de mise à jour et de suppression n'ont pas besoin de renvoyer le jeu de résultats, la classe DataAdapter n'est pas nécessaire pour les opérations qui n'ont pas besoin de renvoyer la valeur, et les opérations de requête doivent généralement renvoyer le jeu de résultats, vous devez donc utiliser l'objet DataAdapter pour lier le jeu de résultats au contrôle de données

Je suppose que tu aimes

Origine blog.csdn.net/weixin_65243968/article/details/129963256
conseillé
Classement