2011-06-27 3 views
6

J'ai une situation, j'ai une table d'accès nommée Débits de gaz que je veux ajouter des dossiers. Lorsque je tente de lancer ma requête d'insertion pour une table similaire Common Station, je reçois l'erreur suivante:Demander une table qui a des espaces dans son nom

"error hy000: syntax error, in query incomplete query clause"

code

est:

using System; 
using System.Data.Odbc; 

class MainClass 
{ 
static void Main(string[] args) 
{ 
    string connectionString = "Dsn=Gas_meter"; 
    string sqlins = ""; 
    OdbcConnection conn = new OdbcConnection(connectionString); 

    OdbcCommand cmdnon = new OdbcCommand(sqlins, conn); 
    conn.Open(); 

    try 
    { 
     cmdnon.CommandText = "INSERT INTO 'Common station' (S1Flow, S2Flow, S3Flow, S4Flow) VALUES (9999,999, 999, 999)"; 
     //Once the above line works replace it with cmdnon.CommandText= "INSERT INTO Gas Flow Rates (S1Flow, S2Flow, S3Flow, S4Flow) VALUES (9999,999, 999, 999)" 
     int rowsAffected = cmdnon.ExecuteNonQuery(); 
     Console.WriteLine(rowsAffected); 
    } 
    catch (Exception ex) 
    { 
     Console.WriteLine(ex.ToString()); 
    } 
    finally 
    { 
     conn.Close(); 
    } 
} 
} 

Comment puis-je surmonter cette erreur?

Répondre

33

Surround l'élément espacé avec des crochets:

[Common station] 

gifle alors le gars qui a conçu la base de données.

+1

Merci, je le ferais absolument s'il ne vivait pas en Arizona. Je pense que je vais lui envoyer un clip de l'émission Chappelle Rick James skit où Rick James lui dira ce que les cinq doigts ont dit à la blague du visage. LMBO –

+0

J'ai un problème avec un gars utilisant des mots-clés comme noms de colonnes. Même solution (c'est-à-dire [] - et peut-être la gifle?). Il y a des raisons pour lesquelles nous ne faisons pas cela (le mot maintenabilité signifie-t-il quelque chose?). –

+0

Pas vraiment, il ne détient pas une grande importance qui ne peut être dérivé de Gas_Flow_Rates ou GasFlowRates. C'est juste la façon dont il a créé la table autant que je sache. –

3
cmdnon.CommandText = "INSERT INTO '[Common station]' (S1Flow, S2Flow, S3Flow, S4Flow) VALUES (9999,999, 999, 999)"; 
    //Once the above line works replace it with cmdnon.CommandText= "INSERT INTO Gas Flow Rates (S1Flow, S2Flow, S3Flow, S4Flow) VALUES (9999,999, 999, 999)" 
3

SELECT * FROM [My Crazy Table With Spaces and Other Chars!]

Utilisez des crochets pour table "citation" et les champs.

1

En retard à la fête je sais, mais je viens de résoudre mon propre problème ici ... Jouer dans l'accès 2007 en utilisant la connexion ODBC à un SQL Db.

Nom de la table est Employee_Appointment Détail supplémentaire personnalisé Syntaxe pour sélectionner est la suivante SQlRecordSet.Open "Select * from [l'employé]. [Nomination supplémentaire Détail personnalisé]", Connecticut, adOpenStatic, adLockOptimistic

Hope this sauve quelqu'un d'autre quelques heures de jeu!

Questions connexes