2009-04-22 5 views
3

Ich muss eine Tabelle in MS Access-Datenbank erstellen. Betrachten Sie, ConfigStructure.mdb ist mein Datenbankname und ich muss eine Tabelle in dieser Datenbank in C# erstellen.So erstellen Sie eine Tabelle in einer MS Access-Datenbank in C#

Wie kann ich das tun? Ich habe es mit dem folgenden Code versucht, aber es funktioniert nicht.

 OleDbConnection myConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + frmMain.strFilePath + "\\ConfigStructure.mdb"); 
     myConnection.Open(); 
     string strTemp = " KEY Text, VALUE Text "; 
     OleDbCommand myCommand = new OleDbCommand(); 
     myCommand.Connection = myConnection; 
     myCommand.CommandText = "CREATE TABLE table1(" + strTemp + ")"; 
     myCommand.ExecuteNonQuery(); 
     myCommand.Connection.Close(); 

Dies ist der Fehler, die ich erhalte,

"System.Data.OleDb.OleDbException: Syntax error in field definition 
System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult)\r\n at System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult)\r\n at System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult)\r\n at System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method)" 
+0

Können Sie Fehler oder Warnungen hinzufügen, wenn Sie versuchen, das auszuführen? –

Antwort

15

ersetzen
string strTemp = " KEY Text, VALUE Text "; 

mit

string strTemp = " [KEY] Text, [VALUE] Text "; 

Ich denke, der Grund dafür ist, dass 'Schlüssel' ein 'VALUE' sind reservierte Schlüsselwörter in Access oder S QL.

1

Ich vermute, dass das Problem das Wort KEY als Spaltenname verwendet - das ist wahrscheinlich ein reserviertes Wort. Versuchen Sie es mit anderen Spaltennamen.

2

KEY und VALUE sind beide reserved words. Besonders wird es wahrscheinlich auf "KEY" hängen, weil Sie PRIMARY KEY als Einschränkung in einem CREATE TABLE Befehl angeben können.

Versuchen Sie es mit anderen Spaltennamen oder umgeben sie durch Klammern (z. B. [KEY]), wenn Sie wirklich wollen sie verwenden (nicht empfohlen).

1

"KEY" und "VALUE" sind reservierte Wörter in MS Access. Wenn Sie diese Namen für Ihre Felder verwenden möchten, müssen Sie sie in eckigen Klammern umschließen:

string strTemp = " [KEY] Text, [VALUE] Text "; 
0

Auf meinem Computer, Windows 7 SP1 Professional 64-bit, fand ich Microsoft ADO Ext. 2.8 für DDL und Sicherheit in C: \ Programme \ Gemeinsame Dateien \ System \ ado \ msadox28.dll.

Es ist auch als Referenz gefunden wird:

, die ist im Preis inbegriffen wie ADOX in den Referenzen

enter image description here

Standardmäßig werden Spalten als Text [erstellt 255]. Hier sind einige Beispiele, um Spalten als unterschiedliche Datentypen zu erstellen.

table.Columns.Append("PartNumber", ADOX.DataTypeEnum.adVarWChar, 6); // text[6] 
table.Columns.Append("AnInteger", ADOX.DataTypeEnum.adInteger); // Integer 

fand ich diese Liste von Datentypen zu erstellen und zu lesen Felder Access-Datenbank

Zugang Text = AdVarWChar

Zugang Memo = adLongVarWChar

Zugang Numeric Byte = adUnsignedTinyInt

Zugriff Numerisch Ganzzahl = adSmallInt

Zugang Numeric Long Integer = adInteger

Zugang Numerische Einzel Präzision = adSingle

Zugang Numeric doppelter Genauigkeit = AdDouble

Zugang Numeric Replicatie-id = adGuid

Zugang Numerische Dezimal = adNumeric

Zugriff Datum/Uhrzeit = adDate

Zugang Währung = AdCurrency

Zugang Autowert = adInteger

Zugang Ja/Nein = adBoolean

Zugang HyperLink = adLongVarWChar

0

Sie sollten immer Namen der Tabellen und Spalten in diese schreiben [] Ihr Beispiel:

Funktioniert perfekt.

Verwandte Themen