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

C# 如何在C中的MS access数据库中创建表#,c#,C#,我需要在MS access数据库中创建一个表。 考虑,“CONTRONSCRES.MDB”是我的数据库名称,我需要在这个数据库中创建一个表。 我该怎么做?我尝试了下面的代码,但它不工作 OleDbConnection myConnection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + frmMain.strFilePath + "\\ConfigStructure.mdb");

我需要在MS access数据库中创建一个表。 考虑,“CONTRONSCRES.MDB”是我的数据库名称,我需要在这个数据库中创建一个表。 我该怎么做?我尝试了下面的代码,但它不工作

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

string strTemp = " KEY Text, VALUE Text ";

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

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

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

键和值都是。特别是它可能会挂起“键”,因为您可以在
创建表
命令中将
主键
指定为约束

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

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

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

在我的计算机Windows 7 sp1 Professional 64位上,我在C:\Program Files\Common Files\System\ADO\msadox28.dll中找到了用于DDL和安全性的Microsoft ADO Ext.2.8

也可作为参考:

在参考文献中作为ADOXADOX包含

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

table.Columns.Append("PartNumber", ADOX.DataTypeEnum.adVarWChar, 6); // text[6]
table.Columns.Append("AnInteger", ADOX.DataTypeEnum.adInteger); // Integer 
我找到了用于创建和读取access数据库字段的数据类型列表

Access Text=adVarWChar

访问备忘录=adLongVarWChar

访问数字字节=adUnsignedTinyInt

访问数字整数=adSmallInt

访问数值长整数=adInteger

访问数字单精度=adSingle

访问数字双精度=可加双精度

访问数字复制id=adGuid

访问数字十进制=adNumeric

访问日期/时间=adDate

访问货币=adCurrency

访问自动编号=adInteger

访问是/否=adBoolean

访问超链接=adLongVarWChar


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

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

工作正常。

您是否可以添加尝试运行此操作时出现的任何错误或警告?