Debutant ORACLE VB .NET

Résolu
battit64 Messages postés 18 Date d'inscription mercredi 24 août 2005 Statut Membre Dernière intervention 10 juillet 2009 - 15 sept. 2007 à 01:28
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 - 17 sept. 2007 à 19:36
Bonjour j'essaie d'insere des enregistremetn dans une table mais j'ai une erreur ORA-00984 un nom de colone n'est pasautorisé ici
si quelqu'un peut m'aider car je sui débutant

Class

Form1

Private
Sub connection_oracle()

Try

Dim oradb
As
String =
"Data Source=(DESCRIPTION=" _+

"(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.103.14)(PORT=1521)))" _+

"(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=PPIFC)));" _+

"User Id=ic;Password=icic;"

Dim conn
As
New OracleConnection(oradb)conn.Open()

Dim cmd
As
New OracleCommandcmd.Connection = conn

cmd.CommandText =

"INSERT INTO PP_UTI (NOM_UTI, PRENOM_UTI) VALUES (" + TextBox1.Text +
"," + TextBox2.Text +
")"cmd.CommandType = CommandType.Text

cmd.ExecuteNonQuery()

'Dim dr As OracleDataReader = cmd.ExecuteReader()

'While dr.Read()

'ListBox1.Items.Add("Le Nom " + dr.Item(0) + _

' " est à " + dr.Item("PRENOM_UTI"))

'Attention au signe pour les requêtes paramétrées sous Oracle

Catch ex
As OracleException
' intercepte seulement les erreurs Oracle
Select
Case ex.Number

Case 1
MessageBox.Show(
"Insertion ou MAJ impossible car la clé primaire dupliquée.")

Case 12545
MessageBox.Show(
"La Base de Données n'est pas disponible.")

Case
Else
MessageBox.Show(
"Erreur de Base de Données : " + ex.Message.ToString())

End
Select
End
Try
End
Sub

battit64

4 réponses

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
15 sept. 2007 à 11:18
Je dirais qu'à priori cela vient de ta requette INSERT. Je presume que Nom et Prenom sont déclarés comme des champs texte.

Les valeurs que tu leurs passent sont bien du texte, sauf qu'elles ne sont pas encadré par des quotes ( ' ). De ce fait Oracle ne les comprends pas comme étants des valeurs mais comme étant des nom de colonnes. Et il ne peut pas y avoir de nom de colonnes dans la rubrique VALUES.

Il faut donc corriger ainsi :

cmd.CommandText = "INSERT INTO PP_UTI (NOM_UTI, PRENOM_UTI) VALUES ( '
"+ TextBox1.Text +
"','"+ TextBox2.Text +
"')"

---- Sevyc64  (alias Casy) ---- <hr size ="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
3
battit64 Messages postés 18 Date d'inscription mercredi 24 août 2005 Statut Membre Dernière intervention 10 juillet 2009
17 sept. 2007 à 19:34
désolé j'ai trouvé la réponse moi meme le probleme venait de la déclaration des variable toto et toto2
battit64
3
battit64 Messages postés 18 Date d'inscription mercredi 24 août 2005 Statut Membre Dernière intervention 10 juillet 2009
17 sept. 2007 à 19:30
effectivement tu avais raison (désolé pour le retard je pensais que personne ne m'avais répondu)
il me prends bien les lettres mais seulement la premiere lettre.
par exemple si je mets toto=valentin et toto2=marc dans ma base de donée j'aurais NOM_UTI=V et PRENOM_UTI=m
Voici mon code:

Private
Sub connection_oracle()

Try

Dim oradb
As
String =
"Data Source=(DESCRIPTION=" _+

"(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.103.14)(PORT=1521)))" _+

"(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=PPIFC)));" _+

"User Id=ic;Password=icic;"

Dim conn
As
New OracleConnection(oradb)conn.Open()

Dim cmd
As
New OracleCommand

Dim toto
As
Char

Dim toto2
As
Chartoto = TextBox1.Text

toto2 = TextBox2.Text

cmd.Connection = conn

cmd.CommandText =

"INSERT INTO PP_UTI (NOM_UTI,PRENOM_UTI) VALUES ('" + toto +
"','" + toto2 +
"')"cmd.CommandType = CommandType.Text

cmd.ExecuteNonQuery()

'Dim dr As OracleDataReader = cmd.ExecuteReader()

'While dr.Read()

'ListBox1.Items.Add("Le Nom " + dr.Item(0) + _

' " est à " + dr.Item("PRENOM_UTI"))

'Attention au signe pour les requêtes paramétrées sous Oracle

 

 

 

Catch ex
As OracleException
' intercepte seulement les erreurs Oracle

Select
Case ex.Number

Case 1MessageBox.Show(

"Insertion ou MAJ impossible car la clé primaire dupliquée.")

Case 12545MessageBox.Show(

"La Base de Données n'est pas disponible.")

Case
ElseMessageBox.Show(

"Erreur de Base de Données : " + ex.Message.ToString())

End
Select 

 

End
Try 

End
Sub

battit64
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
17 sept. 2007 à 19:36
Forcément, tu déclare toto et toto2 comme étnat des Char (1 caractères).

Déclare-les en chaines de caratères (String) et ça ira mieux.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
0
Rejoignez-nous