IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP.NET Discussion :

Se connecter a une base SQL server 2012 [ASP MVC en VB]


Sujet :

ASP.NET

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2014
    Messages : 8
    Points : 3
    Points
    3
    Par défaut Se connecter a une base SQL server 2012 [ASP MVC en VB]
    Bonjour,

    Je débute en ASP MVC après avoir développé et maintenu des DB en windows form.

    Je voudrais me connecter à une de mes DB existantes dans SQL Server 2012 et y afficher/modifier les infos dans une Datagrid view. Mais après avoir lu quantité de tuto et de discussions sur les forums je galère toujours autant.

    J'ai ajouté cette connection dans web.config, et sa me semble bon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <add name="ArticleDB" connectionString="Data Source=THOMASFAVEREAU\SQL2012;Initial Catalog=ShopDatabase;Integrated Security=SSPI"
          providerName="System.Data.SqlClient" />
    Ensuite j'ai créé un modèle "Article.vb", relativement simple pour commencer, qui correspond exactement a ma DB
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Namespace Articles
     
        Public Class Article
            Public Property ArticleID As Integer
            Public Property ArticleName As String
            Public Property ArticlePrice As Integer
     
        End Class
     
    End Namespace
    Puis j'ai créé un controller "Empty MVC Controller" nommé "ArticlesController.vb"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Public Class ArticlesController
        Inherits System.Web.Mvc.Controller
     
        '
        ' GET: /Articles
     
        Function Index() As ActionResult
            Return View()
        End Function
     
    End Class
    Enfin j'ai ma view "Index.vbhtml" qui m'affichera mes infos mais qui est vide pour le moment
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    @Code
        ViewData("Title") = "Index"
    End Code
     
    <h2>Index</h2>
    - Pour le controller, devrais-je plutot ajouter un controller de type " MVC Controller with read/write actions and views, using Entity Framework"?
    - Si c'est le cas, il me faut un Data Context Class valide. Est cette partie de code qui doit etre écrite dans mon modèle?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Public Class MovieDbContext
            Inherits DbContext
     
            Public Property Movies As DbSet(Of Movie)
        End Class
    - Enfin j'ai entendu parlé de class SQLDataSources, qui devrait me permettre d'afficher mes info dans une DG. Donc j'en déduit que cela aura sa place dans ma view Index!?

    Merci.

    Si vous avez des tuto en Visual Basic pour se connecter à une DB sur SQL server, je suis preneur (a lire ou en vidéo). Merci par avance

  2. #2
    Membre éprouvé
    Homme Profil pro
    Architecte technique
    Inscrit en
    Septembre 2005
    Messages
    462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 462
    Points : 1 056
    Points
    1 056
    Par défaut
    Salut,

    Voici un lien (j'ai eu du mal a trouver la version VB)
    C# : MVC 5 (C#)
    VB.net : MVC5 (VB)

    Le premier site en version C# contient beaucoup plus d'informations... Il y a quelque temps il faisait une version VB mais j'ai l'impression qu'ils ont arrêtés.

    Voici quelques remarques :
    - Pour ta classe "MovieDbContext" il va falloir lui indiquer le nom de ta chaine de connexion (si le nom de ta connexion ne match pas avec le nom de ta classe il faut utiliser le constructeur pour lui passer le nom "ArticleDB" ) Lien
    Nom : Context.jpg
Affichages : 1015
Taille : 73,3 Ko
    MSDN DbContext

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Public Class MovieDbContext
            Inherits DbContext
            Public Sub New()
                 MyBase.New("ArticleDB")
             End Sub
            Public Property Movies As DbSet(Of Movie)
        End Class

    - Dans ton controller il va falloir utilisé MovieDbContext pour requêter ta base.Lien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Public Class MoviesController
            Inherits System.Web.Mvc.Controller
     
            Private db As New MovieDbContext
     
            Function Index() As ActionResult
                Return View(db.Movies.ToList())
            End Function
    - Ensuite il faut passer tes données à ta vue (même lien que ci-dessus)

    Les SQLDataSource sont utilisés en ASP.NET et non en ASP.NET MVC

    Il se pourrai qu'il y ai quelques erreurs, je ne fais jamais de VB...

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2014
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Merci pour la réponse et les précision Kat.

    J'ai déja suivit les tutos via le lien que tu m'a filé, tout fonctionne bien, le tuto est très clair. Mais il utilise SQL Express alors que j'aurais besoin de me connecter a des DB qui sont sur SQL server 2012...Et c'est là où je bloque. Je m'y repenche demain.
    Par contre j'ai vu qu'il y a un sous forum ASP MVC. Est il possible qu'un modérateur déplace la discussion a cet endroit? Sa me parait être plus judicieux.

  4. #4
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2014
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Bon j'ai pas pu m'empecher de tester sa Sa a l'air mieux, mais maintenant j'ai une erreur qui me dit
    The model backing the 'ArticleDB' context has changed since the database was created. Consider using Code First Migrations to update the database (http://go.microsoft.com/fwlink/?LinkId=238269).
    Le chemin vers la connaissance de l'ASP MVC n'est définitivement pas un long fleuve tranquille

  5. #5
    Membre éprouvé
    Homme Profil pro
    Architecte technique
    Inscrit en
    Septembre 2005
    Messages
    462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 462
    Points : 1 056
    Points
    1 056
    Par défaut
    Tu as cette erreur car tu as du modifier une "entité" dans ton code et cela ne correspond plus au model de la base, c'est à dire qu'il y a un problème entre ton context et ton modèle de Bdd.

    Voici un lien.

    Il y a plusieurs stratégie pour soit toujours recréer la base soit la mettre à jour quand elle a été modifiée...

    Je te laisse regarder mais n'hésite pas si tu as des questions...

  6. #6
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2014
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Thaïlande

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2014
    Messages : 8
    Points : 3
    Points
    3
    Par défaut
    Merci

    J'ai suivit ton lien, au moment de add-migration dans le PM il me demande un nom, j'ai entré "DataAnnotations".

    Puis j'ai entré update-database, et là il me sort une erreur :
    Column names in each table must be unique. Column name 'ArticleID' in table 'dbo.Articles' is specified more than once.
    Là je me suis dit, pas possible, ma table dans SQL server s'appelle "dbo.Articles" (elle s'appelait dbo.ArticlesTable avant, mais j'ai comme l'impression qu'elle doit avoir le même nom que le namespace de mon modèle, je l'ai renommé), et elle ne contient que 3 colonnes : -ArticleID , ArticleName et ArticlePrice
    J'ai donc essayé de regardé dans le dossier "migrations" du solution explorer, et ce que j'y trouve m'éffraie...

    Le fichier XXX_InitialCreate.vb contient ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    Imports System
    Imports System.Data.Entity.Migrations
     
    Namespace Migrations
        Public Partial Class InitialCreate
            Inherits DbMigration
     
            Public Overrides Sub Up()
                CreateTable(
                    "dbo.Articles",
                    Function(c) New With
                        {
                            .ItemId = c.Int(nullable := False, identity := True),
                            .ItemName = c.String(nullable := False),
                            .THBPriceStore = c.Int(nullable := False),
                            .THBPriceStaff = c.Int(nullable := False),
                            .USDPriceOnline = c.Int(nullable := False),
                            .Stock = c.Int(nullable := False),
                            .ItemVisble = c.Boolean(nullable := False),
                            .EmailSent = c.Boolean(nullable := False)
                        }) _
                    .PrimaryKey(Function(t) t.ItemId)
     
            End Sub
     
            Public Overrides Sub Down()
                DropTable("dbo.Articles")
            End Sub
        End Class
    End Namespace
    Tandis que le fichier YYY_DataAnnotations contient cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    Imports System
    Imports System.Data.Entity.Migrations
     
    Namespace Migrations
        Public Partial Class DataAnnotations
            Inherits DbMigration
     
            Public Overrides Sub Up()
                AddColumn("dbo.Articles", "ArticleID", Function(c) c.Int(nullable := False, identity := True))
                AddColumn("dbo.Articles", "ArticleName", Function(c) c.String())
                AddColumn("dbo.Articles", "ArticlePrice", Function(c) c.Int(nullable := False))
                DropPrimaryKey("dbo.Articles", New String() { "ItemId" })
                AddPrimaryKey("dbo.Articles", "ArticleID")
                DropColumn("dbo.Articles", "ItemId")
                DropColumn("dbo.Articles", "ItemName")
                DropColumn("dbo.Articles", "THBPriceStore")
                DropColumn("dbo.Articles", "THBPriceStaff")
                DropColumn("dbo.Articles", "USDPriceOnline")
                DropColumn("dbo.Articles", "Stock")
                DropColumn("dbo.Articles", "ItemVisble")
                DropColumn("dbo.Articles", "EmailSent")
            End Sub
     
            Public Overrides Sub Down()
                AddColumn("dbo.Articles", "EmailSent", Function(c) c.Boolean(nullable := False))
                AddColumn("dbo.Articles", "ItemVisble", Function(c) c.Boolean(nullable := False))
                AddColumn("dbo.Articles", "Stock", Function(c) c.Int(nullable := False))
                AddColumn("dbo.Articles", "USDPriceOnline", Function(c) c.Int(nullable := False))
                AddColumn("dbo.Articles", "THBPriceStaff", Function(c) c.Int(nullable := False))
                AddColumn("dbo.Articles", "THBPriceStore", Function(c) c.Int(nullable := False))
                AddColumn("dbo.Articles", "ItemName", Function(c) c.String(nullable := False))
                AddColumn("dbo.Articles", "ItemId", Function(c) c.Int(nullable := False, identity := True))
                DropPrimaryKey("dbo.Articles", New String() { "ArticleID" })
                AddPrimaryKey("dbo.Articles", "ItemId")
                DropColumn("dbo.Articles", "ArticlePrice")
                DropColumn("dbo.Articles", "ArticleName")
                DropColumn("dbo.Articles", "ArticleID")
            End Sub
        End Class
    End Namespace
    Toutes les colonnes qui ne sont pas ArticlePrice, ArticleName, et ArticleID viennent d'une autre table dans la même DB que ma table dbo.Articles. Cette autre table s'appelle dbo.ItemTable, et je ne comprend vraiment pas pourquoi il va me chercher sa !!!

Discussions similaires

  1. [AC-2007] Autonumber dans un formulaire connecte a une base SQL Server
    Par sylvain77 dans le forum IHM
    Réponses: 0
    Dernier message: 16/07/2010, 05h01
  2. Se connecter a une base sql server en PHP
    Par redah75 dans le forum Applications et environnements graphiques
    Réponses: 4
    Dernier message: 14/04/2009, 13h42
  3. probleme de connection a une base sql server
    Par bassoum dans le forum JDBC
    Réponses: 2
    Dernier message: 06/05/2008, 21h18
  4. comment se connecter a une base sql server
    Par jasminrose dans le forum JDBC
    Réponses: 20
    Dernier message: 17/04/2007, 15h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo