使用C#向Paradox表插入查询时出现问题

我有Paradox 5.x表我需要连接到以便选择和更新。 我正在使用OLEDBConnection。

从表中选择我没有问题。 当我尝试插入表格时,我遇到了一个问题,当我输入硬编码字段名称时出现错误:INSERT INTO语句包含以下未知字段名称:…所以我使用OleDbDataReader.GetName(…)来获取字段名。 现在我使用从表中重新获得的字段名称,以便插入到表中,我仍然得到相同的错误。

我认为问题在于字段名称:’Truck#1 Serial Number’表名:’Vehicles’

我尝试使用[],。“”,。[]和。[“”]。

我已经了解了Borland引擎的需求,但我不确定这是不是问题。 先谢谢你。

– =诺姆= –

ps我无法更改表的名称,因为它需要连接的castumer DB。

我添加了我使用的C#代码:

private static string createInsertQueryVehicle(string i_VehicleNumber, string i_VehicleMFG, string i_Truck1SerialNo, string i_Truck2SerialNo, string i_Truck3SerialNo) { string tryout = string.Format("INSERT INTO {0} ([{6}], [{7}], [{8}], [{9}], [{10}]) VALUES(RIGHT('{1}',10),'{2}','{3}','{4}','{5}')", TableName, Vnum, Vinfo, T1Serial, T2Serial, T3Serial, VnumFieldName, VinfoFieldName, T1SerialFieldName T2SerialFieldName,T3SerialFieldName); return tryout; } 

试用结束时:

 INSERT INTO Vehicles ([Vehicle Number], [Vehicle Mfg], [Truck #1 Serial Number], [Truck #2 Serial Number], [Truck #3 Serial Number]) VALUES(RIGHT('000000010001525',10),'קרונות משא','ר40011_1','ר40011_2','') 

编辑:只是想在最后添加我的解决方案:最后,我可以得到的最佳解决方案是使用访问作为连接点使用链接tablse到paradox表,最后处理它作为一个加入DB …..希望它可以帮助某人。

您需要在字段或表名称中使用带引号的标识符,同时具有特殊字符。 双引号( " )应该是您正在寻找的。

此外,我确实认为需要Borland数据库引擎才能对抗像Paradox这样的Borland数据库。 至少,我一直被告知,虽然我从未体验过这样的架构,因为我在使用Paradox时使用的是Delphi。

当您找到(有点复杂的)解决方案时……可能值得将ODBC跟踪放入并查看Access如何传递导致问题的字段名称。 它可能只是paradox接受散列(#)或类似东西的转义序列。 只是一个想法。

我能够通过创建一个带有数字符号列(col#)的表(Table1)来重现该问题。 喜欢:

 INSERT INTO `Table1.db` (`col#`) VALUES ('a') 

我运行这个SQL的地方我得到这个错误:

 The INSERT INTO statement contains the following unknown field name: 'col#'. Make sure you have typed the name correctly, and try the operation again. 

这似乎是Microsoft JET提供程序的错误。 找到的唯一解决方法是将值插入到另一列中

 INSERT INTO `Table1.db` (`col1`) VALUES ('a') 

然后更新col#列:

 UPDATE `Table1.db` SET `col#` = col1 

我发现了JET提供程序的其他问题。 例如,如果表没有受保护的主键或密码,您将收到此错误错误:

 Operation must use an updateable query.