如何在C#中创建MS访问数据库中的表

时间:2009-04-22 09:05:58

标签: c#

我需要在MS Access数据库中创建一个表。 考虑一下,'ConfigStructure.mdb'是我的数据库名称,我需要在C#中用这个数据库创建一个表。

我该怎么做?我尝试使用下面的代码,但它无法正常工作。

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

这是我得到的错误,

"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)"

6 个答案:

答案 0 :(得分:15)

替换

string strTemp = " KEY Text, VALUE Text ";

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

我认为原因是'KEY'和'VALUE'是Access或SQL中的保留关键字。

答案 1 :(得分:2)

KEY和VALUE都是reserved words。特别是它可能会挂起“KEY”,因为您可以在PRIMARY KEY命令中将CREATE TABLE指定为约束。

尝试使用不同的列名或用括号括起来(例如[KEY])如果确实想要使用它们(不建议)。

答案 2 :(得分:1)

我怀疑问题是使用KEY这个词作为列名 - 这可能是一个保留字。尝试使用不同的列名称。

答案 3 :(得分:1)

“KEY”和“VALUE”是MS Access中的保留字。如果您希望将这些名称用于您的字段,则需要将它们括在方括号中:

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

答案 4 :(得分:0)

在我的电脑上,Windows 7 sp1 Professional 64位,我找到了Microsoft ADO Ext。 2.8 for C:\ Program Files \ Common Files \ System \ ado \ msadox28.dll 中的DDL和安全性。

它也被作为参考:

enter image description here

在参考文献

中包含为 ADOX

enter image description here

默认情况下,列创建为文本[255] 。以下是一些将列创建为不同数据类型的示例。

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

我找到了这个数据类型列表来创建和读取访问数据库字段

  

访问文字= adVarWChar

     

访问备忘录= adLongVarWChar

     

访问数字字节= adUnsignedTinyInt

     

Access Numeric Integer = adSmallInt

     

访问数字长整数= adInteger

     

访问数字单精度= adSingle

     

Access Numeric Double Precision = adDouble

     

访问Numeric Replicatie-id = adGuid

     

访问数字十进制= adNumeric

     

访问日期/时间= adDate

     

访问货币= adCurrency

     

访问AutoNumber = adInteger

     

访问是/否= adBoolean

     

访问HyperLink = adLongVarWChar

答案 5 :(得分:0)

您应该始终在这些[]中写入表和列的名称 你的例子:

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

完美无缺。