Site:  Cours VB.net  
6.7 Créer une base de données. Ajouter une table.

Comment créer une base de données

Comment ajouter une table?

Pour consulter une base de données vous pouvez utiliser L'explorateur de serveurs.

Pour accéder à l'Explorateur de serveurs, sélectionnez Explorateur de serveurs dans le menu Affichage et regarder la doc.

 

Créer une base de données:

 

Base Access.

Avec un  Provider OleDB: (System.Data.OLEDB) impossible de créer une BD Access par du code.

 

On rappelle qu'on peut créer rapidement une BD Access 'à la main':

    Sur le fond d'écran: Bouton droit->Nouveau->Application Microsoft Access

 

Si on veut absolument créer une BD Access par code, il faut passer par DAO.

Référence: ajouter le composant COM 'Microsoft DAO 3.6 Library 5'

Imports DAO

Imports DAO.LanguageConstants

Dim result As Boolean = False

Dim dbe As New DBEngine

Dim db As Database

Try

db = dbe.CreateDatabase("c:\test.mdb", dbLangGeneral)

If Not (db Is Nothing) Then result = True

Catch ex As Exception : MsgBox(ex.Message)

Finally : If Not (db Is Nothing) Then db.Close()

End Try

Ensuite, on peut travailler en OleDB.

(merci les forums de developpez.com)

 

SqlServer.

Avec un  Provider SqlServer: (System.Data.SqlClient) on peut créer une BD Sql Server par du code.

Exemple:

Protected Const SQL_CONNECTION_STRING As String = _

"Server=localhost;" & _

"DataBase=;" & _

"Integrated Security=SSPI"

 

Dim strSQL As String = _

"IF EXISTS (" & _

"SELECT * " & _

"FROM master..sysdatabases " & _

"WHERE Name = 'HowToDemo')" & vbCrLf & _

"DROP DATABASE HowToDemo" & vbCrLf & _

"CREATE DATABASE test"

 

Dim northwindConnection As New SqlConnection(connectionString)

Dim cmd As New SqlCommand(strSQL, northwindConnection)

northwindConnection.Open()

cmd.ExecuteNonQuery()

northwindConnection.Close()

Code non testé.

 

Ajouter une table à une BD existante:

 

Dans un Dataset, on peut ajouter des données puis par un update mettre à jour la base de données.

On peut aussi ajouter des tables en local dans le Dataset,  mais  updater la base ne rajoute pas les tables dans la base.

Comment donc ajouter une table à la base?

 

En fait pour ajouter une table à la base il faut le faire avec l'objet Command et sa méthode ExecuteNoQuery et une requête SQL:

 

On crée une Connexion et un objet Command, on indique à la propriété TypeCommand que l'on envoie du texte (pas une procédure stockée), on prépare le texte SQL avec CREATE puis on exécute avec ExecuteNoQuery.

 

Exemple :

Il existe une BD Acces nommée NOM.MDB , je veux y ajouter une Table nommée PARENT avec 3 champs CLI_ID  CLI_NOM CLI_PRENOM:

 

Imports System

Imports System.Data

Imports System.Data.OleDb

 

Dans la zone déclaration de la fenêtre:

'Déclarer la connexion

Private ObjetConnection As OleDbConnection

' Déclaration l'Objet Commande

Private ObjetCommand As OleDbCommand

 

'Paramètres de connexion à la DB

Private strConn As String

 

Dans une routine  Button1_Click créer une table avec 3 champs dans la base de données.

 

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

 

strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source= c:nom.mdb;"

ObjetConnection = New OleDbConnection

'Donner à la propriété ConnectionString les paramètres de connexion

ObjetConnection.ConnectionString = strConn

'Ouvrir la connexion

ObjetConnection.Open()

'Instancier un objet Commande

ObjetCommand = New OleDbCommand

'Lier Commande et Connexion

ObjetCommand.Connection = ObjetConnection

'Indiquer le type de commande

ObjetCommand.CommandType = CommandType.Text

'Donner le texte de la commande SQL

ObjetCommand.CommandText = "CREATE TABLE PARENT (CLI_ID INTEGER NOT NULL PRIMARY KEY, CLI_NOM CHAR(32) NOT NULL, CLI_PRENOM VARCHAR(32))"

'Ici on crée une table PARENT avec 3 champs ; CLI_ID est un entier non nul qui sert de clé primaire, CLI_NOM  CLI_PRENOM sont des chaînes de 32 caractères.

'on exécute la commande

ObjetCommand.ExecuteNonQuery()

'Fermer la connexion

ObjetConnection.Close()

End Sub