Nom de table non valide ?! [Résolu]

Messages postés
25
Date d'inscription
mardi 18 avril 2006
Dernière intervention
26 mai 2006
- - Dernière réponse : bolbolo
Messages postés
1
Date d'inscription
mercredi 28 février 2007
Dernière intervention
7 mai 2008
- 7 mai 2008 à 13:07
bonjour à tous amis dévellopeurs, voila j'utilise un code pour créer une base de donnée en local sur un pocket pc, cela me renvoi une erreur : "the table name is not valid. [ Token line number (if known) =1 , Token line offset (if known) = 22, Table name = Types ]

voici mon code :

Public Sub CreateCeDB()

If Not File.Exists(CeDBFileName) Then
Dim cu_sql As String
Dim MyConnectionStr As String = "Data Source=" & CeDBFileName
Dim MySqlCeEngine As New SqlCeEngine(MyConnectionStr)
MySqlCeEngine.CreateDatabase() 'créé la base de donées

Dim myconnection As New SqlCeConnection(MyConnectionStr)
Try
myconnection.Open()
Dim mycmd As New SqlCeCommand
mycmd = myconnection.CreateCommand
mycmd.CommandType = Data.CommandType.Text
'remplir cu_sql avec l'instruction pour créer les tables
cu_sql = "CREATE TABLE [dbo].[Types] ("
cu_sql += "[idtype] [int] NOT NULL ,"
cu_sql += "[nom] [varchar] (50) COLLATE French_CI_AS_NOT NULL "
cu_sql += ") ON [PRIMARY]"
mycmd.CommandText = cu_sql
mycmd.ExecuteNonQuery()

cu_sql = "CREATE TABLE [dbo].[Test] ("
cu_sql += "[id] [char] (10) COLLATE French_CI_AS_NOT NULL,"
cu_sql += "[id_test] uniqueidentifier ROWGUIDCOL NOT NULL,"
cu_sql += "[idtype] [int] NULL ,"
cu_sql += "[nomtype] [varchar] (50) COLLATE French_CI_AS_NOT NULL "
cu_sql += "[montant] [money] NOT NULL ,"
cu_sql += "[idperso] [int] NOT NULL ,"
cu_sql += "[datetest] [datetime] NOT NULL ,"
cu_sql += ") ON [PRIMARY]"
mycmd.CommandText = cu_sql
mycmd.ExecuteNonQuery()

cu_sql = "CREATE TABLE [dbo].[Test2] ("
cu_sql += "[idperso] [int] NOT NULL ,"
cu_sql += "[nom] [varchar] (50) COLLATE French_CI_AS_NOT NULL "
cu_sql += "[prenom] [varchar] (50) COLLATE French_CI_AS_NOT NULL "
cu_sql += "[login] [varchar] (50) COLLATE French_CI_AS_NOT NULL "
cu_sql += "[password] [varchar] (50) COLLATE French_CI_AS_NOT NULL "
cu_sql += ") ON [PRIMARY]"
mycmd.CommandText = cu_sql
mycmd.ExecuteNonQuery()

Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Exclamation)

End Try
End If
End Sub
Ps : j'ai un doute sur : mycmd.CommandType Data.CommandType.Text car sur la version d ebase c'étais mycmd.CommandType CommandType.Text

J'espère que quelqu'un trouvera l'erreur, mercie beaucoup. C'est trés important.
Afficher la suite 

Votre réponse

12 réponses

Meilleure réponse
Messages postés
25
Date d'inscription
mardi 18 avril 2006
Dernière intervention
26 mai 2006
3
Merci
j'ai trouvé d'ou viennes les erreurs, j'ai tuilisé les cours de labo-dotnet, et il sont écrit en CF1.0 alors que moi je lançais une application en CF2.0 qui n'a rien à voir, connaissez vous des cours de CF2.0 ? merci

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 96 internautes nous ont dit merci ce mois-ci

Commenter la réponse de geii82
Messages postés
698
Date d'inscription
jeudi 16 janvier 2003
Dernière intervention
20 mai 2011
0
Merci
salut

as tu essayé de mettre autre chose que "Types" comme nom de table. il s'agit peut etre d'un mot clef.
par exmple une table qui s'appelle ORDER posera des probleme car elle pourra etre confondue par le systeme avec le mot clef ORDER du tres fameux ORDER BY

a ma connaissance, Types n'est pas un mot clef SQL, mais fait le test pour etre sur que le probleme ne vient pas de la
Commenter la réponse de aieeeuuuuu
Messages postés
25
Date d'inscription
mardi 18 avril 2006
Dernière intervention
26 mai 2006
0
Merci
je l'ai appelée michel, et sa fais pareil ^^
Commenter la réponse de geii82
Messages postés
559
Date d'inscription
jeudi 25 juillet 2002
Dernière intervention
5 septembre 2007
0
Merci
Vire [dbo] etc..., esaye :
CREATE TABLE Types (


et dans la deuxieme requete oublie pas de virer la virgule du dernier champ ;)
Commenter la réponse de Mindiell
Messages postés
25
Date d'inscription
mardi 18 avril 2006
Dernière intervention
26 mai 2006
0
Merci
J'aissayé de de virer [db0]... de cette façon et j'ai une nouvelle erreur :
The specified Data type is not valid. [ Data type (if known) = varchar ]

Imports System.Data.SqlServerCe
Imports System.IO

Public Class Form1

Private Sub Form1_Closed(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Closed
Application.Exit()
End Sub

Private Sub Form1_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
If (e.KeyCode = System.Windows.Forms.Keys.Up) Then
'Rocker Up
'Up
End If
If (e.KeyCode = System.Windows.Forms.Keys.Down) Then
'Rocker Down
'Down
End If
If (e.KeyCode = System.Windows.Forms.Keys.Left) Then
'Left
End If
If (e.KeyCode = System.Windows.Forms.Keys.Right) Then
'Right
End If
If (e.KeyCode = System.Windows.Forms.Keys.Enter) Then
'Enter
End If

End Sub

Protected Overrides Sub Finalize()
MyBase.Finalize()
End Sub

Public Sub New()

' This call is required by the Windows Form Designer.
InitializeComponent()

' Add any initialization after the InitializeComponent() call.

End Sub

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

CreateCeDB()

End Sub

Private CeDBFileName = "\Program Files\Base6.sdf" '"\Program Files\DiscoControl\Base\Base3.sdf"

Public Sub CreateCeDB()

If Not File.Exists(CeDBFileName) Then
Dim cu_sql As String
Dim MyConnectionStr As String = "Data Source=" & CeDBFileName
Dim MySqlCeEngine As New SqlCeEngine(MyConnectionStr)
MySqlCeEngine.CreateDatabase() 'créé la base de donées

Dim myconnection As New SqlCeConnection(MyConnectionStr)
Try
myconnection.Open()
Dim mycmd As New SqlCeCommand
mycmd = myconnection.CreateCommand
mycmd.CommandType = Data.CommandType.Text
'remplir cu_sql avec l'instruction pour créer les tables
cu_sql = "CREATE TABLE Types ("
cu_sql += "[idtype] [int] NOT NULL ,"
cu_sql += "[nom] [varchar] (50) COLLATE French_CI_AS_NOT NULL "
cu_sql += ") ON [PRIMARY]"
mycmd.CommandText = cu_sql
mycmd.ExecuteNonQuery()

'cu_sql = "CREATE TABLE [dbo].[Test] ("
' cu_sql += "[id] [char] (10) COLLATE French_CI_AS_NOT NULL,"
' cu_sql += "[id_test] uniqueidentifier ROWGUIDCOL NOT NULL,"
' cu_sql += "[idtype] [int] NULL ,"
' cu_sql += "[nomtype] [varchar] (50) COLLATE French_CI_AS_NOT NULL "
' cu_sql += "[montant] [money] NOT NULL ,"
' cu_sql += "[idperso] [int] NOT NULL ,"
' cu_sql += "[datetest] [datetime] NOT NULL"
' cu_sql += ") ON [PRIMARY]"
' mycmd.CommandText = cu_sql
' mycmd.ExecuteNonQuery()

' cu_sql = "CREATE TABLE [dbo].[Test2] ("
' cu_sql += "[idperso] [int] NOT NULL ,"
' cu_sql += "[nom] [varchar] (50) COLLATE French_CI_AS_NOT NULL "
' cu_sql += "[prenom] [varchar] (50) COLLATE French_CI_AS_NOT NULL "
' cu_sql += "[login] [varchar] (50) COLLATE French_CI_AS_NOT NULL "
' cu_sql += "[password] [varchar] (50) COLLATE French_CI_AS_NOT NULL "
' cu_sql += ") ON [PRIMARY]"
' mycmd.CommandText = cu_sql
' mycmd.ExecuteNonQuery()

Catch ex As Exception
MsgBox(ex.Message, MsgBoxStyle.Exclamation)

End Try
End If
End Sub

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

'Dim myconnection As New SqlCeConnection("datasource = " & CeDBFileName)
' Dim myr As SqlCeDataReader
' myconnection.Open()
' Dim command As SqlCeCommand = New SqlCeCommand("select * from test", myconnection)
' myr = command.ExecuteReader
' While myr.Read
' ListBox1.Items.Add(myr("montant"))
' End While
' myr.Close()
' myr.Dispose()
' myconnection.Close()
' myconnection.Dispose()

' End Sub

End Class

Une idée ?
Commenter la réponse de geii82
Messages postés
698
Date d'inscription
jeudi 16 janvier 2003
Dernière intervention
20 mai 2011
0
Merci
essaie sans les crochets entre tes types de champs.
mets directement VARCHAR(60)

Les crochets servent normalement a préciser au systeme qu'il s'agit d'un nom donné par l'utilisateur, justement pour que le systeme ne "confonde" pas un nom de table ou de champ avec un mot clef.
Commenter la réponse de aieeeuuuuu
Messages postés
25
Date d'inscription
mardi 18 avril 2006
Dernière intervention
26 mai 2006
0
Merci
jai essayé comme sa : cu_sql = "CREATE TABLE Types ("
                                cu_sql += "[idtype] int NOT NULL ,"
                                cu_sql += "[nom] nvarchar(50) "
                                cu_sql += ") ON [PRIMARY]"

sa ne marche pas, vs connaissez pas un site ou je peut trouver les commandes exactes ?
Commenter la réponse de geii82
Messages postés
698
Date d'inscription
jeudi 16 janvier 2003
Dernière intervention
20 mai 2011
0
Merci
la c'est bizare.

mais ta syntaxe est bonne.
es tu sur que ce n'est pas un probleme de droit ?

tu as toujours la meme erreur avec cette derniere instruction ?
Commenter la réponse de aieeeuuuuu
Messages postés
25
Date d'inscription
mardi 18 avril 2006
Dernière intervention
26 mai 2006
0
Merci
toujours pareil oui, je travaille avec visual studio pro 2005, et j'émule avec le pcc2003. Au niveau des droits tu entends quoi par la ? Sinon oui c'est toujours une erreur similaire.

arf vais me faire tapper sur les doigts...

Merci de votre aide
Commenter la réponse de geii82
Messages postés
698
Date d'inscription
jeudi 16 janvier 2003
Dernière intervention
20 mai 2011
0
Merci
ce que j'entendais par droit, c'est est-ce que l'utilisteur avec lequel tu te logue sur SQL Server a les droits pour créer une table ?

je pense que le message d'erreur serait different mais bon.

sinon as tu essayé de lancer directement ta commande depuis un client SQL ?
pour voir si ton probleme vient de ta commande SQL ou du pilote que tu utilise pour la lancer.
Commenter la réponse de aieeeuuuuu
Messages postés
25
Date d'inscription
mardi 18 avril 2006
Dernière intervention
26 mai 2006
0
Merci
je pense avoir tout les droits nécessaire, pour lancer cette commande je dois le faire a partir de sql server 2005 ?
Commenter la réponse de geii82
Messages postés
1
Date d'inscription
mercredi 28 février 2007
Dernière intervention
7 mai 2008
0
Merci


Commenter la réponse de bolbolo

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.