geii82
Messages postés25Date d'inscriptionmardi 18 avril 2006StatutMembreDernière intervention26 mai 2006
-
25 avril 2006 à 17:01
bolbolo
Messages postés1Date d'inscriptionmercredi 28 février 2007StatutMembreDerniè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()
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.
A voir également:
Nom d'objet non valide sql server
Nom de colonne non valide - Meilleures réponses
Nom de colonne non valide sql server - Meilleures réponses
geii82
Messages postés25Date d'inscriptionmardi 18 avril 2006StatutMembreDernière intervention26 mai 2006 3 mai 2006 à 16:30
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
aieeeuuuuu
Messages postés698Date d'inscriptionjeudi 16 janvier 2003StatutMembreDernière intervention20 mai 20112 25 avril 2006 à 17:37
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
geii82
Messages postés25Date d'inscriptionmardi 18 avril 2006StatutMembreDernière intervention26 mai 2006 26 avril 2006 à 10:43
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
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()
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()
aieeeuuuuu
Messages postés698Date d'inscriptionjeudi 16 janvier 2003StatutMembreDernière intervention20 mai 20112 27 avril 2006 à 09:59
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.
geii82
Messages postés25Date d'inscriptionmardi 18 avril 2006StatutMembreDernière intervention26 mai 2006 28 avril 2006 à 14:26
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.
aieeeuuuuu
Messages postés698Date d'inscriptionjeudi 16 janvier 2003StatutMembreDernière intervention20 mai 20112 28 avril 2006 à 14:34
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.