【发布时间】:2018-06-17 08:35:32
【问题描述】:
我尝试更新我的 Access 中的一行,我的代码运行良好,我必须异常,但我的数据库没有任何变化
这是我从 Winform 项目中的表单调用的方法
public static void UpdateNextReportNumber(int machineNumber, string reportNumber)
{
try
{
using (OleDbConnection openCon = new OleDbConnection(localConnectionString))
{
string saveStaff = "UPDATE [Calibration] " +
"SET [NextReportNumber]=@report " +
"where [MachineNumber]=@machine";
using (OleDbCommand querySaveStaff = new OleDbCommand(saveStaff))
{
querySaveStaff.Connection = openCon;
querySaveStaff.Parameters.AddWithValue("@machine", 16);
querySaveStaff.Parameters.AddWithValue("@report",2);//Convert.ToInt32(reportNumber.Remove(0, 3)) + 1
openCon.Open();
int recordsAffected = querySaveStaff.ExecuteNonQuery();
}
}
}
catch (Exception ex)
{
//WriteLog(ex.StackTrace, ex.Message);
throw ex;
}
}
我的代码通过了这一行
int recordsAffected = querySaveStaff.ExecuteNonQuery();
但在 recordsAffected 中我的值为 0
我不知道该怎么办
我尝试使用 Access 这个查询来执行
UPDATE [Calibration]
SET [NextReportNumber]=2
where [MachineNumber]=36
而且它的工作正常
我也用过
public static void AddCalibration(Calibration calibration)
{
try
{
using (OleDbConnection openCon = new OleDbConnection(localConnectionString))
{
string saveStaff = "INSERT into [Calibration] ([MachineNumber] ,[LastCalibrationDate] ,[NextCalibrationDate])" +
"VALUES (@MachineNumber, @LastCalibrationDate, @NextCalibrationDate)";
using (OleDbCommand querySaveStaff = new OleDbCommand(saveStaff))
{
querySaveStaff.Connection = openCon;
querySaveStaff.Parameters.AddWithValue("@MachineNumber", calibration.MachineNumber);
querySaveStaff.Parameters.AddWithValue("@LastCalibrationDate", calibration.LastCalibrationDate);
querySaveStaff.Parameters.AddWithValue("@NextCalibrationDate", calibration.NextCalibrationDate);
openCon.Open();
int recordsAffected = querySaveStaff.ExecuteNonQuery();
}
}
}
catch (Exception ex)
{
//WriteLog(ex.StackTrace, ex.Message);
throw ex;
}
}
它也可以正常工作......
感谢您的帮助...
【问题讨论】:
-
这是一个重复的问题,OLEDB for Access 不支持命名参数。请参阅SO post 即答案
-
@Sion.D.P 那么我的插入如何工作?