有了奥列格的暗示,我找到了缺少主键的解决方法 .
但它需要两个Querys
首先选择匹配行的 Record Number 别名 RECNO .
SELECT RECNO() FROM table_name WHERE foo=''
现在读取Result的第一行(这是行的“id”)
将其保存为变量( int row_id ),并在 WHERE 仅在以下行的 UPDATE 查询之后放置: "RECNO() ="+row_id
示例:
var MyOleDBCommand = MyOleDBConnection.CreateCommand();
MyOleDBCommand.CommandText = "SELECT RECNO() FROM table_name WHERE foo=''";
int row_id = -1;
/** Search for some matching rows **/
using(var reader = MyOleDBCommand.ExecuteReader()){
// Check if something was found
if(reader.HasRows){
reader.Read(); // Read only the first row (or use a for-loop if you need more then 1)
row_id = (int)reader.GetDecimal(0);
}
}
/** If a matching row was found **/
if(row_id > -1){
MyOleDBCommand.CommandText = "UPDATE table_name SET foo='bar' WHERE RECNO()="+row_id;
if(MyOleDBCommand.ExecuteNonQuery()>0){
//Successfully Updatet
}}
}
Remarks: RECNO的类型为 Decimal ,因此您必须使用 GetDecimal(0) (参见示例代码)