2017-01-13 1 views
1

Der Versuch, den obigen Code funktioniert zu bekommen, aber mit ihm zu kämpfen. Ich schätze, ich mache etwas falsch mit der Saite. Aber kann nicht herausfinden, was.SQL-Befehl mit Zeichenfolge als Tabellenname

Die Zeichenfolge wird perfekt an die Methode übergeben. MessageBox zeigt die richtige Zeichenfolge an. Aber mein Adapter sagt

Syntaxfehler in der Abfrage. Unvollständige Abfrage-Klausel

Wenn ich den Tabellennamen selbst eintippe, funktioniert alles gut.

EDIT:

Die angeschlossene Datenbank (Access):

static private OleDbConnection Connection = new OleDbConnection(); 

    private void zPrepConnect(string SourceFile) 
    { 
     Connection.ConnectionString = String.Format("Provider=Microsoft.ACE.OLEDB.12.0;" + "Data Source = {0};", SourceFile); 
     Command.Connection = Connection; 
    } 

EDIT # 2: Tabellennamen sind wie folgt:

  • RSTW
  • Simis ist
  • Simis w
  • Simis c

EDIT # 3: entfernt Räume von Tabellennamen, aber immer noch nicht funktioniert:

  • RSTW
  • simis_is
  • simis_w
  • simis_c
+3

Welche Datenbank versuchen Sie zu fragen? –

+2

Was ist der Wert von Tabellenname? Da liegt der Fehler. –

+0

Wie wäre es mit '" SELECT * FROM "+ Tabellenname +" ' –

Antwort

2

Sie brauchen nicht "oder% -Zeichen in der Abfrage, nur mit dem Namen gehen:

Adapter = new OleDbDataAdapter("SELECT * FROM [" + tablename + "]", Connection); 

prüfen msdn sicher sein zu Syntax.

+0

Danke für Ihre Antwort, aber ich habe das schon versucht. Computer sagt nein ;-) Ich bekomme" Syntax Error in FROM-Klausel. " – mykds

+1

Wie lautet Ihr Tabellenname? es irgendwie SQL-reservierten Namen? Wie Benutzer? Dann gehen Sie einfach mit [TableName] -Syntax, aber Sie brauchen immer noch% oder 'Symbole, die würde 100% Fehler führen. – 3615

+1

Das Problem ist Platz in Ihrem Tabellennamen, nur Verwenden Sie [Tabellenname] -Syntax – 3615

0

Sie können auch string.Format verwenden:

string query = string.Format ("select * from \"{0}\" ", TableName);