6
votes

Concepts de base de données très basiques en C #

J'écris un programme de console en C # et je dois utiliser une base de données.

Je recherche des didacticiels très basiques sur la connexion et l'utilisation d'une DB à partir d'un programme de console C #. Je n'ai pas encore été capable de trouver assez de base et j'espère que les gens ici peuvent m'aider à trouver les informations dont j'ai besoin. J'ai lu le matériel sur MSDN, mais MSDN assume des connaissances de base sur ces choses que je cherche toujours.

J'ai créé une DB au sein de VS Express dans mon projet, créé des tables et écrit quelques enregistrements de démarrage dans les tableaux. J'essaie de savoir exactement ce que chacune de ces choses est et comment déterminer comment les appliquer dans mon projet:

sqlconnection

classe SQLConnection

SQLCOMMAND

sqldataAdapter

jeux de données

merci.


0 commentaires

7 Réponses :


2
votes

Créez une SQLConnection, ouvrez-la, créez un SQLCOMMAND, exécutez-le pour obtenir un SQLDatreader, Voila. Vous n'aurez pas besoin d'un datadapter pour un exemple simple.

string connectionString = "...";
using (SqlConnection conn = new SqlConnection(connectionString))
{
  conn.Open();
  string sql = "select field from mytable";
  SqlCommand cmd = new SqlCommand(sql, conn);
  SqlDataReader rdr = cmd.ExecuteReader();
  while (rdr.Read())
  {
    Console.WriteLine(rdr[0]);
  }
}


3 commentaires

Merci, il semble que vous compreniez ce que je demande. J'ai commencé à poser un tas de questions sur chaque terme de l'exemple, mais pourriez-vous vous expliquer un peu sur chacun, s'il vous plaît. Ou connaissez-vous un didacticiel aussi basique que j'ai besoin?


Je pense que Silky répondit mieux que moi!


Je t'ai eu. Merci pour vos réponses.



8
votes

quelque chose comme: xxx

- Edit:

Bien sûr, lorsque vous commencez à faire des choses sérieuses, je recommande un ormes. J'utilise llblgen (cela coûte de l'argent, mais la plupart de la peine en vaut la peine).

- Modifier:

SQLConnection

La chose à travers lequel vous communiquez à la base de données. Cela tiendra le nom de la Serveur, nom d'utilisateur, mot de passe et autres choses diverses.

SQLCOMMAND

Quelque chose qui détient l'instruction SQL que vous souhaitez envoyer au serveur. Cela peut être une «mise à jour» ou «insertion» ou «sélectionner» ou quelque chose. En fonction de ce que c'est, vous utilisez une méthode différente pour l'exécuter, à éventuellement obtenir des données de récupération de données.

sqldataaadapter

un étrange; Il est utilisé spécifiquement pour remplir un «jeu de données». Il fait fondamentalement un peu de travail pour vous, ajoutant les informations qu'il trouve à l'ensemble.

Dataset

Je ne sais pas à quel point tu veux ça. C'est juste une collection de données retournées, dans un format de table, que vous pouvez itérez terminé. Il contient des datables, car certaines requêtes peuvent renvoyer plusieurs table. Typiquement, cependant, vous n'aurez qu'une seule table et vous pouvez le lier, ou quoi que ce soit.


9 commentaires

Merci. Je cherche vraiment des explications de chaque commandement dans une langue extrêmement fondamentale. Je les ai regardés chez MSDN, mais je n'ai pas encore de bons aperçu de chaque élément, c'est-à-dire quel est leur rôle, pourquoi il est nécessaire, ce qu'il fait exactement, etc. dans la langue de débutant.


Mis à jour avec quelques définitions de base.


joliment défini. Bon exemple aussi.


En ce moment, je ne travaille maintenant sur une version de la console (à des fins d'apprentissage et de test) d'un programme beaucoup plus important que j'écris. Je n'ai pas réalisé que l'orm et les questions que je demande étaient des animaux totalement différents. Dois-je laisser tomber cela et commencer à utiliser orm maintenant dans ma version de la console? Si oui, où / comment puis-je commencer? Merci.


Alors que Llblgen coûte de l'argent réel. Mais ça sauve tellement de temps, ça vaut le coup. Si vous écrivez des applications pour lesquelles vous obtiendrez de l'argent, je vous suggérerais de l'acheter et de l'apprendre. Sinon, si vous apprenez simplement à vous amuser, aucun préjudice ne peut provenir de la compréhension des bases de l'accès des données (c'est-à-dire non ORM). Heck, vous pourriez même essayer d'écrire votre propre orj, juste pour le plaisir. Je l'ai fait. Mais pour des trucs sérieux: llblgen.


Ouais, je viens de vérifier le prix et, pour l'instant, je suppose que je vais me tenir. Quel est l'inconvénient de ne pas utiliser d'ormes? En outre, y a-t-il d'autres, bien, gratuits, ORM est disponible? Merci encore.


Il y a beaucoup d'ormes libres, mais ils sont tous très différents. NHibernate est un, Linq-to-SQL est un autre, subsonique, etc. personnellement, je n'aime pas beaucoup d'entre eux, préférant Llblgen n'importe quel jour.


Je t'ai eu. (Je viens de lire à propos de Linq ci-dessous juste avant de lire votre commentaire) Comment caractériseriez-vous les avantages et les inconvénients de (moi dans ma situation) en utilisant un ormes.


@Chris: Un orm abstrait de la nécessité de la nécessité de SQL cru et vous permettra d'écrire des requêtes qui seront erronées au moment de la compilation, pas d'exécution (Ergo, les rend plus faciles à déboguer). Cependant, les ormes ont souvent une période difficile à optimiser les requêtes SQL, à tirer parti des indices et à tirer parti de certaines des fonctionnalités de base de données les plus avancées (telles que des tables temporaires ou de quoi avez-vous). Je suis un gars SQL au cœur et les ormes sont trop abstraits pour mon goût personnel, mais c'est vraiment ce que vous vous sentez à l'aise et quel type d'application vous construisez.



1
votes

J'ai acheté un livre appelé pragmatique ado.net . < / p>


0 commentaires

0
votes

En général, je vous recommande d'utiliser le Microsoft Enterprise Library pour l'accès à la DB. Je l'ai utilisé dans quelques projets et je l'aime beaucoup.

Voir le Accès aux données QuickStart Fourni par Microsoft qui devrait vous aider à démarrer

aussi, j'ai également grandi habitué à écrire Méthodes d'extension pour extraire des données à partir de datarswers. Par exemple, je peux faire quelque chose comme ceci: xxx

espère que cela aide!


1 commentaires

Merci. Comment la bibliothèque MS Enterprise se compare-t-elle à SQLCLIENT ou à ORM? (désolé si cela ressemble à une question stupide)



2
votes

Il y a un tutoriel sur ado.net qui couvre beaucoup de choses que vous recherchez à http://www.csharp-station.com/tatudials/adodototnet/lesson01.aspx . Leçon 1 est surtout de fond mais la leçon 2 et vers l'avant sur les objets clients SQL.

Un autre tutoriel à http://www.codeproject.com/kb/database/ sql_in_cshaarp.aspx couvre certaines des bases (SQLConnection, SQLCOMMAND).


1 commentaires

Ce tutoriel de gare Csharp est un excellent pour commencer avec Ado.net! Je l'ai lu 2 ou 3 fois lors de la mise en route. Avant longtemps, vous obtenez votre dal travaillant sans même y penser. Cela semble juste intimidant au début, mais il devient alors une seconde nature.



1
votes

Eh bien, il existe deux façons d'interagir avec une base de données SQL Server en C #. Le premier est avec Linq, et la seconde est avec la bibliothèque SQLCLIENT.

LINQ H2>

Depuis que .NET 3.0, nous avons eu accès à Linq, qui est une orme et un moyen assez impressionnant de traiter avec collections et listes. LINQ peut fonctionner avec une base de données de deux manières différentes. Ils sont: p>

  • LINQ à SQL LI>
  • Linq aux entités LI> ul>

    Scott Gu a un très bon tutoriel sur LINQ à SQL , également. Je recommanderais Linq à SQL pour commencer à commencer, et vous pouvez utiliser beaucoup de celui de Linq vers des entités à l'avenir. P>

    Un échantillon Sélectionnez CODE> pour saisir tous les clients de NOUVEAU York serait: p>

    using System.Data;
    using System.Data.SqlClient;
    //...
    SqlConnection dbConn = new 
        SqlConnection("Data Source=localhost;Initial Catalog=MyDB;Integrated Security=SSPI");
    SqlCommand dbComm = new SqlCommand();
    SqlDataReader dbRead;
    
    dbConn.Open();
    dbComm.Connection = dbConn;
    
    dbComm.CommandText = "select name from customers where state = @state";
    dbComm.Parameters.Add("@state", System.Data.SqlDbType.VarChar);
    dbComm.Parameters["@state"].Value = "NY";
    
    dbRead = dbComm.ExecuteReader();
    
    if(dbRead.HasRows)
    {
        while(dbRead.Read())
        {
            Console.WriteLine(dbRead[0].ToString());
        }
    }
    
    dbRead.Close();
    dbConn.Close();
    


1 commentaires

Cela me prendra un peu de temps pour relire et essayer de le digérer. Merci beaucoup.