我試圖更新MS Access中的表,但更新操作不起作用,我沒有收到錯誤。在Winforms(C#)中OleDb參數查詢:沒有錯誤,但沒有更新行
rowsAffected
爲0,所以沒有更新。
這裏是我的代碼:
public bool UpdateAddress(AddressModel address)
{
using (OleDbCommand dbCommand = new OleDbCommand())
{
// Set the command object properties
dbCommand.Connection = new OleDbConnection(this.ConnectionString);
dbCommand.CommandType = CommandType.Text;
dbCommand.CommandText = "Update Addresses " +
" Set [Street] = @Street, [PostalCode] = @PostalCode, " +
" [City] = @City, [Contact] = @Contact"+
" Where [Address_ID] = @Address_ID";
// Add the input parameters to the parameter collection
dbCommand.Parameters.AddWithValue("@Street", address.Street);
dbCommand.Parameters.AddWithValue("@PostalCode", address.PostalCode);
dbCommand.Parameters.AddWithValue("@City", address.City);
dbCommand.Parameters.AddWithValue("@Address_ID", address.Address_ID);
dbCommand.Parameters.AddWithValue("@Contact", address.Contact);
// Open the connection, execute the query and close the connection
dbCommand.Connection.Open();
var rowsAffected = dbCommand.ExecuteNonQuery();
dbCommand.Connection.Close();
return rowsAffected > 0;
}
}
AddressModel-Class:
public class AddressModel
{
public Int64 Address_ID { get; set; }
public Int64 Customer_ID { get; set; }
public string Street { get; set; }
public string PostalCode { get; set; }
public string City { get; set; }
public string Contact { get; set; }
public bool FirstAddress { get; set; }
}
可能是什麼問題呢?
也許Address_ID在數據庫中不存在?因此沒有任何內容會匹配WHERE子句,因此沒有內容會被更新。我只是猜測,只有你提供的信息是不可能的。但是如果沒有錯誤,那麼很可能是查詢成功執行,這意味着它只是沒有達到你期望的目標,並且使用這樣的簡單查詢,where條件是最明顯的罪魁禍首。把一個斷點在那裏,看看'address.Address_ID'在運行時 – musefan
這裏是功能UpdateAddress的調試:地址是:\t \t ADDRESS_ID 長 \t \t市\t「2222」 \t串 \t \t聯繫\t 「最大」 \t串 \t \t CUSTOMER_ID \t 1個\t長 \t \t FirstAddress \t假\t布爾 \t \t POSTALCODE \t「」 \t串 \t \t街\t「」 \t串 – Orientos
,我也有最後Adress_ID,這是4,表 – Orientos