Query a table that has spaces in its name
Asked Answered
G

4

11

I have a situation, I have a Access table named Gas Flow Rates that I want to add records. When I try to run my insert query for a similar table Common Station, I get the following error:

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

Code is:

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();
    }
}
}

How do I overcome that error?

Geochronology answered 27/6, 2011 at 20:0 Comment(0)
W
54

Surround the spaced out item with square brackets:

[Common station]

Then slap the guy who designed the database.

Willful answered 27/6, 2011 at 20:3 Comment(4)
Thanks, I absolutely would if he didn't live Arizona. I think that I will send him a clip of the Chappelle show Rick James skit where Rick James tell him what did the five fingers say to the face joke. LMBOGeochronology
I have an issue with a guy using keywords as column names. Same solution (i.e. [] - and perhaps the slap?). There are reasons we don't do this (does the word maintainability mean anything?).Willful
Not really, it doesn't hold any great importance that cant be derived from either Gas_Flow_Rates or GasFlowRates. This is just the way that he created the table as far as I know.Geochronology
I laughed really hard at this.Yttriferous
M
7

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

Use brackets to "quote" table and field names.

Massey answered 27/6, 2011 at 20:3 Comment(0)
S
4
  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)"
Swage answered 27/6, 2011 at 20:3 Comment(0)
P
2

Late to the party I know, but have just solved my own issue here... Playing in access 2007 using ODBC connection to an SQL Db.

Table name is Employee_Appointment Extra Detail Custom Syntax to select is as follows SQlRecordSet.Open "Select * from [Employee].[Appointment Extra Detail Custom]", Conn, adOpenStatic, adLockOptimistic

Hope this saves someone else a few hours of playing!

Poky answered 27/10, 2017 at 15:35 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.